Excel-VBA - вызвать Sub и попросить пересмотреть переменную, определенную вне Sub - PullRequest
1 голос
/ 25 апреля 2011

Я пытался вызвать sub Lum () из моей программы callLum (), чтобы попросить Lum получить значение 11,12,13 соответственно, но похоже, что Lum не может распознать мое более раннее определение счетчика в callLum (), проиллюстрируйте как скрипт ниже. Причина в том, что в моем реальном скрипте Main у меня длинный цикл For-next, если я не прерываю цикл с помощью Msgbox, программа кажется не может найти слово «For», когда оно достигло «next». Вот почему я заканчиваю завершение основного скрипта, а затем создаю простой саб для его вызова.

Sub callLum()
  Dim counter As Integer
  Dim LR As Long, j As Long

  counter = 10
  'checking number of rows in column A
  LR = Range("A" & Rows.Count).End(xlUp).Row

  For j = 1 To LR
   If Not IsEmpty(Range("A" & j)) And Not IsEmpty(Range("B" & j)) Then _
     counter = counter + 1        
   Call Lum                                                            
  Next j
  MsgBox "THE END"
End Sub


Sub Lum()
  MsgBox "Counter value is " & counter
End Sub

1 Ответ

2 голосов
/ 25 апреля 2011

Измените значение Lum на:

Sub Lum(ByVal counter as Integer)
   MsgBox "Counter value is " & counter
End Sub

Для вашего цикла, вместо того, чтобы тестировать каждый элемент диапазона отдельно, укажите диапазон как Ax: Ay, где x и y заполнены вашим циклом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...