我试图从我的程序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
答案 0 :(得分:2)
将Lum改为:
Sub Lum(ByVal counter as Integer)
MsgBox "Counter value is " & counter
End Sub
对于你的循环,不是单独测试范围的每个元素,而是将范围指定为Ax:Ay,其中x和y由循环填充。