Excel-VBA - 调用Sub并要求它识别Sub外部定义的变量

时间:2011-04-25 02:52:23

标签: excel-vba vba excel

我试图从我的程序callLum()中调用一个子Lum(),要求Lum分别获得值11,12,13,但看起来Lum无法识别我之前在callLum中的计数器定义(),如下面的脚本所示。原因是在我的实际主脚本中我有一个很长的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 个答案:

答案 0 :(得分:2)

将Lum改为:

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

对于你的循环,不是单独测试范围的每个元素,而是将范围指定为Ax:Ay,其中x和y由循环填充。