Excel VBA - передача переменных в вызываемую подпрограмму / функцию: когда, что и как - PullRequest
0 голосов
/ 08 мая 2018

Я не могу найти, в каких случаях я должен передать что-то подпрограмме, и если да, то, что я должен передать и как. В макросе, над которым я работаю, есть цикл, который происходит несколько раз, поэтому я думаю, что лучше поместить цикл в подпрограмму, которую я вызываю в основной подпрограмме. Цикл в основной подпрограмме выглядит следующим образом:

For x = 2 To 7
        Bedrag = Application.WorksheetFunction.SumIfs(rngUitgaaf, _
        rngInstrum, Instrum, rngKstPlaats, KstPlaats, rngWet, _
        Wet, rngRekening, Rekening, rngJaar, (Jaar + x - 2))
        If aantSub = 0 Then
          arrTabBegr(rijTabBegr, x) = arrTabBegr(rijTabBegr, x) + Bedrag
        Else
          arrTabBegr(tlrLezen + 3, x) = arrTabBegr(tlrLezen + 3, x) + Bedrag
        End If
      Next x

Все переменные, диапазоны и массив объявлены, и он отлично работает в основной подпрограмме.

В основной подпрограмме я заменил код на

TelKasOp

Subub выглядит следующим образом:

Sub TelKasOp()
For x = 2 To 7
        Bedrag = Application.WorksheetFunction.SumIfs(rngUitgaaf, _
        rngInstrum, Instrum, rngKstPlaats, KstPlaats, rngWet, _
        Wet, rngRekening, Rekening, rngJaar, (Jaar + x - 2))
        If aantSub = 0 Then
          arrTabBegr(rijTabBegr, x) = arrTabBegr(rijTabBegr, x) + Bedrag
        Else
          arrTabBegr(tlrLezen + 3, x) = arrTabBegr(tlrLezen + 3, x) + Bedrag
        End If
      Next x
End Sub

Когда я запускаю макрос, я получаю ошибку компиляции «Sub или Function notfined» в этой строке (жирная часть):

arrTabBegr (rijTabBegr, x) = arrTabBegr (rijTabBegr, x) + Bedrag

Поиск решения. Я думаю, что это может быть связано с передачей ByRef или ByVal или (отсутствием) объявлений в subub, но я до сих пор не знаю и не понимаю, что делать.

Может кто-нибудь сказать мне, почему ошибка происходит и что я должен делать? Любые предложения будут высоко оценены.

...