Я не могу найти, в каких случаях я должен передать что-то подпрограмме, и если да, то, что я должен передать и как. В макросе, над которым я работаю, есть цикл, который происходит несколько раз, поэтому я думаю, что лучше поместить цикл в подпрограмму, которую я вызываю в основной подпрограмме.
Цикл в основной подпрограмме выглядит следующим образом:
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, но я до сих пор не знаю и не понимаю, что делать.
Может кто-нибудь сказать мне, почему ошибка происходит и что я должен делать?
Любые предложения будут высоко оценены.