1 exit 用法的简要总结
1.1 具体用法
exit do ' 用在do loop 循环里
exit for ' 用在 for next 循环里
exit sub ' 用在sub里
exit function ' 用在function里
exit propperty '??
1.2 错误的用法
exit '不能单独使用
exit if '一般并没有必要跳出 if 吧
2 exit for 只会跳出本层循环
2.1 正常2层循环
Sub ponymatest1()
For i = 1 To 10
For j = 1 To 5
If j = 3 Then
m = m + 1
Debug.Print "第" & m & "次" & "j=" & j
End If
Next
If i = 7 Then
n = n + 1
Debug.Print "第" & n & "次" & "i=" & i & " ";
End If
Next
End Sub
2.2 可以看出exit 跳出的循环只是本层的循环
两层for 循环,对应的 exit for 只会跳出本层
Sub ponymatest1()
For i = 1 To 10
For j = 1 To 5
If j = 3 Then
m = m + 1
Debug.Print "第" & m & "次" & "j=" & j
Exit For
End If
Next
If i = 7 Then
n = n + 1
Debug.Print "第" & n & "次" & "i=" & i & " ";
Exit For
End If
Next
end sub
2.3 如果是exit sub 会跳出整个sub
exit for 跳出循环
exit sub 跳过整个过程,停止执行这个sub
Sub ponymatest1()
For i = 1 To 10
For j = 1 To 5
If j = 3 Then
m = m + 1
Debug.Print "第" & m & "次" & "j=" & j
Exit Sub
End If
Next
If i = 7 Then
n = n + 1
Debug.Print "第" & n & "次" & "i=" & i & " ";
Exit For
End If
Next
end sub
3 end 和 exit sub的差别不大?
end sub 只能用在最后,并且end sub 后面不能有 有效的语句代码
只有 end 可能出现在 代码块的中间
end 和exit sub 是有差别的
虽然看起来,只运行1个sub的话差别不大的样子?
3.1 原始代码
Sub ponymatest1()
For i = 1 To 5
If i = 3 Then
Debug.Print "i*i=" & i * i
End If
Next
ponymatest2
End Sub
Sub ponymatest2()
Debug.Print "hello, I am " & "ponymatest2"
End Sub
3.2 加入exit for
Sub ponymatest1()
For i = 1 To 5
If i = 3 Then
Debug.Print "i*i=" & i * i
Exit For
End If
Next
ponymatest2
End Sub
Sub ponymatest2()
Debug.Print "hello, I am " & "ponymatest2"
End Sub
3.3 加入 exit sub
跳出了sub 不再执行后面的语句
Sub ponymatest1()
For i = 1 To 5
If i = 3 Then
Debug.Print "i*i=" & i * i
Exit Sub
End If
Next
ponymatest2
End Sub
Sub ponymatest2()
Debug.Print "hello, I am " & "ponymatest2"
End Sub
3.4 加入end
结束了sub 不再执行后面的语句
Sub ponymatest1()
For i = 1 To 5
If i = 3 Then
Debug.Print "i*i=" & i * i
End
End If
Next
ponymatest2
End Sub
Sub ponymatest2()
Debug.Print "hello, I am " & "ponymatest2"
End Sub
4 end 和 exit sub的真实差别
4.1 变量释放上不一样
End释放所有变量的内存,然后退出所有sub
而exit sub仅仅退出当前sub ,并不释放变量
Dim a
Sub ponymatest1()
a = 101
Exit Sub
End Sub
Sub ponymatest2()
a = 102
End
End Sub
Sub ponymatest3()
Debug.Print a
End Sub
Sub test1()
ponymatest1
ponymatest3
End Sub
Sub test2()
ponymatest2
ponymatest3
End Sub
4.2 end 会终止所有正在运行的VB程序?
如果你正在运行的只有一个程序,两个是一样的,如果同时运行的有两个程序,则
exit sub 只退出当前程序
end 结束所有程序的运行
4.3 end 会终止sub 和其他窗体等
end不管关闭这个sub ,还会关闭其他东西: 窗体等
在含有窗体操作时特别需要注意。
比如,在窗体上有一个按钮,如果这个按钮执行的程序中含有 exit sub 是退出按钮所执行的程序,窗体不会关闭。
end 不但退出按钮所执行的程序,连窗体也会关掉,所有正在运行的程序都会关掉
5 加了exit , 是否可以不需要本身的结尾了?---不能省略其他关键字
比如 for next 如果有了exit for 了 可以不需要next了吗? 不行
do loop 中间有了 exit do ,显然还是需要末尾有 loop的
sub ... end sub 也是不能省略的
function ... end function
Sub ponyma1()
arr1 = Range("j1:k10")
For i = LBound(arr1) To UBound(arr1)
For j = LBound(arr1, 2) To UBound(arr1, 2)
If arr1(i, j) > 999 Then
Debug.Print arr1(i, j)
Exit For
End If '有exit for了,是不是可以不要end if? '如果缺少这个,会显示next没有for
Next
If arr1(i, j) = "a" Then
Debug.Print arr1(i, j)
Exit Sub
End If
Next
'Exit Sub
End Sub
————————————————
版权声明:本文为CSDN博主「奔跑的犀牛先生」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xuemanqianshan/java/article/details/103771844