以下VB脚本通过测试功能检查有效IP
如果我们从测试功能中获得好的话 我们打破循环ValidIP = OK 如果没有,inputBox会问问题,直到ValidIP = OK
但有时我想通过取消按钮退出循环
如何通过取消按钮打破循环(为了将ValidIP设置为OK)
Do Until ValidIP=OK
IPrange=InputBox("Enter IP address range",,"172.17.202.1-10,192.9.200.1-100")
Test IPrange, strPattern
Loop
答案 0 :(得分:2)
在Test ...行之前输入类似下面的代码(代码是从vbscript如何工作的旧记忆中写的):
If Len(IPrange) = 0 Then
Exit Do
End
当用户点击Cancel
时,InputBox
会返回0长度的字符串。
答案 1 :(得分:1)
我不知道VB脚本,但我会解决这个问题如下。
您的IP by Test函数将在一个单独的线程中运行,运行GUI的线程必须能够与您的其他线程通信并设置变量。
为了便于阅读,我将介绍一个新的变量,让我们说AbortedByUser这个变量可以由你的其他线程设置(事件处理程序或类似的东西,不公开...)
然后你的代码看起来像这样:
Do Until ValidIP=OK AND !AbortedByUser
IPrange=InputBox("Enter IP address range",,"172.17.202.1-10,192.9.200.1-100")
Test IPrange, strPattern
Loop
请注意,当函数启动时,必须将AbortedByUser设置为false。
因为我不知道VB脚本我现在不知道怎么写这个而不是正确的东西..; - )
答案 2 :(得分:1)
得到答案here。虽然它可以通过谷歌搜索,但它是在一个不那么常见的网站上。因此,我在这里发布答案,以便其他人可以使用。
对于这个特定的问题,目前接受的答案会很好。
常见方法存在问题,与if IPrange = "" then ...
如果按OK
保持输入框为空,或者按cancel
,或者单击关闭按钮,则上述代码将以相同的方式处理所有3个。
但是这段代码可以解决这个问题:
IPrange=InputBox("Enter IP address range",,"172.17.202.1-10,192.9.200.1-100")
If TypeName(IPrange) = "Empty" Then
MsgBox "User has cancelled"
Exit Do
End If