8

我在谷歌上看过,没有答案!

第一件事。WScript.Quit 不起作用!我不知道“WScript”是什么,但它显然与网页的客户端脚本无关。我以前在某个地方看到过这个“WScript”的东西,它只会产生错误(可能已经过时或其他什么)所以请不要建议它......

无论如何......我想做的就是在不满足条件的情况下完全停止脚本。显然我不想要“退出子”,因为如果嵌入了该子,代码将继续运行!

我知道“停止”命令,但我的印象是它仅用于调试。

希望是一个非常简单的问题。

更新和结论:在我结束这个主题之前,我将稍微扩展一下我正在尝试做的事情......

我有许多通过按钮单击启动的主要潜艇。为了使我不必编辑每个单独的子,我在每个子中嵌入了一个通用子,并进行了初步检查。

初步检查的一部分是在用户输入不正确的情况下停止程序。如果检测到错误,我想从那时起停止所有进展。“退出子”显然会跳过该初步子的其余部分,而主子将继续执行。

最后,这只是写入错误标志(在主子程序中检查)或在每个主程序中合并错误条件操作的情况。这样你退出主子,问题就解决了。

这不是懒惰——我只是想减少代码量。无论如何,谢谢您的回复。

4

5 回答 5

10

我发现如果使用 wscript.exe 或 cscript.exe 引擎运行 .vbs/.vbe/.wsf 脚本,WScript 始终可用。当 WScript 不可用时,如果使用不同的引擎运行。例如,在 HTA、网页、VBA 中或从托管的 COM 脚本控件中运行 VBScript。

要退出未从 wscript.exe 或 cscript.exe 运行的脚本,您可以执行以下操作:

main

Sub main
    ' execute code here

    ' oops a confition is not met:
    If Not condition then Exit Sub

    ' more code to execute if condition was met
End Sub
于 2012-11-22T06:26:15.260 回答
7

你可以使用这样的东西:

Sub MyFunc
    ----------
    My Code
    ----------
End Sub

Function Main
  On Error Resume Next
  MyFunc
  If Err.Number <> 0
  Exit Function
End Function

它将停止执行代码,它发现异常或抛出错误。

于 2012-11-29T17:47:40.470 回答
3

只有在 Windows 脚本宿主 (wscript.exe,cscript.exe) 中运行时,Wscript 对象才可用。不是 Internet Explorer(iexplorer.exe、mshta.exe)

一个简单的方法是声明一个全局变量,该变量设置为 false 直到发生错误,如果发生错误,则该变量将设置为 true,之后任何时候检查该变量,您都可以退出 sub\function \for\do\whatever。

例子:

Dim ErrorOccured
On Error Resume Next
ErrorOccured=False


Sub Main()
    If ErrorOccured Then Exit Sub
    'some code
    MsgBox "Main has run"
End Sub


Sub MakeAnError
    If ErrorOccured Then Exit Sub
    'some code
    Err.Raise 2
    If Err Then ErrorOccured=True
End Sub


Function TellMeRandom
    If ErrorOccured Then Exit Function
    'some code
    Randomize
    TellMeRandom =Int((100- 1+ 1) * Rnd + 1)*1
End Function


Function ResetError
    ErrorOccured=False
End Function



Call Main                 'Main will run because an error has not occured (ErrorOccured is False)

MsgBox TellMeRandom       'This will return a random number 1-100

Call MakeAnError          'This will set the Global ErrorOccured to true

MsgBox TellMeRandom       'This will be blank because the ErrorOccured prevented it from running

Call Main                 'This will not run because the ErrorOccured prevented it from running

Call ResetError           'This will set the Global ErrorOccured to false

Call Main                 'This will run because ErrorOccured is back to False

MsgBox TellMeRandom       'This will return a random number 1-100 because ErrorOccured is back to false

只需记住If ErrorOccured then Exit Sub为子例程或If ErrorOccured then Exit Function函数添加。

于 2016-06-04T22:50:14.227 回答
1

最简单的方法,我发现的是:WScript.Quit

于 2020-07-17T10:06:48.273 回答
0

您还可以引发错误,例如:Err.Raise 507

此错误将退出您当前的脚本:"An exception occurred".

于 2014-05-15T00:38:26.243 回答