如何通过输入框中的取消按钮中断循环

时间:2010-06-11 07:38:57

标签: vbscript

以下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

3 个答案:

答案 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