我尝试了几种方法,但没有成功。我的问题是 - 运行loop1,如果满足某些条件,运行loop2直到满足某些条件,返回loop1。
sub program()
Dim i As Integer
Dim q As Integer
For i=1 to 350
If Range("A"&i).value=1 And Range("D"&i).Value<15 Then Goto 1
Next i
1:q=0
Do While List1.Range("A"&i+q).Value<>""
Range("E"&i+q)="K"
q=q+1
Loop
End Sub
我没有找到如何在执行“1循环”后返回“For Next Loop”并继续下一个i的方式返回。也许这是不可能的,我必须在第一个循环中包含某种代码?!谢谢
答案 0 :(得分:3)
将1
处的代码放入函数中并调用它而不是使用goto。当函数退出时,您的第一个循环将从它停止的位置继续执行。
答案 1 :(得分:1)
我实际上并不知道VBA(我上次在1996年左右使用过VB),但这应该或多或少是正确的:
sub program()
Dim i As Integer
Dim q As Integer
i = 1
Do while i <= 350
If Range("A"&i).value=1 And Range("D"&i).Value<15 Then
Do While i <= 350 And List1.Range("A"&i).Value<>""
Range("E"&i)="K"
i=i+1
Loop
Else
i=i+1
End If
Loop
end do
End Sub
答案 2 :(得分:0)
即使MSDN也禁止使用GoTo(你只能将它用于与Resume配对的错误处理),但是既然你问过,这就是方法:
Sub program()
Dim i As Integer
Dim q As Integer
For i=1 to 350
If ((Range("A"&i).value=1) And (Range("D"&i).Value<15)) Then Goto OtherLoop
FirstLoop:
Next i
Exit Sub
OtherLoop:
q=0
Do While List1.Range("A"&i+q).Value<>""
Range("E"&i+q)="K"
q=q+1
Loop
Goto FirstLoop
End Sub
当完成“FirstLoop”时,您需要使用Exit语句来防止代码进入“OtherLoop”,并且还需要告诉它返回到您之前的位置。 再次,避免使用这些东西。循环中的循环( 缩进 组织,请)和辅助过程调用(调用另一个子或函数)更值得推荐。