8

Google で調べましたが、答えはありません。

まず最初に。WScript.Quit が機能しない! 「WScript」が何であるかはわかりませんが、Web ページのクライアント側スクリプトとは明らかに関係ありません。この「WScript」のことを以前どこかで見たことがありますが、エラーが発生するだけです(おそらく廃止されたものか何か)ので、提案しないでください...

とにかく...条件が満たされない場合にスクリプトを完全に停止したいだけです。そのサブが埋め込まれている場合、コードは実行を続けるため、明らかに「Exit Sub」は必要ありません。

「停止」コマンドは知っていますが、デバッグにのみ使用されるという印象を受けています。

うまくいけば、非常に簡単な質問です。

更新と結論: この件を閉じる前に、私がやろうとしていたことについて少しだけ説明します...

ボタンのクリックで開始されるメインのサブがいくつかありました。個々のサブを編集する必要がないようにするために、事前チェックを行った各サブにユニバーサル サブを埋め込みました。

その予備チェックの一部は、ユーザー入力が正しくない場合にプログラムを停止することでした。エラーが検出された場合は、その時点からすべての進行を停止したいと考えました。「終了サブ」は明らかにその予備サブの残りをスキップするだけで、メインサブは実行を続けます。

最終的には、(メイン サブルーチンでチェックされる) エラー フラグを書き込むか、各メイン プロシージャにエラー条件操作を組み込むだけのケースでした。そのようにしてメインサブを終了すると、問題は解決されます。

怠惰ではなく、コードの量を減らしたかっただけです。とにかく応答をありがとう。

4

5 に答える 5

10

wscript.exe または cscript.exe エンジンを使用して .vbs/.vbe/.wsf スクリプトを実行すると、WScript が常に利用可能であることがわかりました。WScript が使用できないのは、別のエンジンを使用して実行している場合です。たとえば、HTA、Web ページ内、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

Wscript オブジェクトは、Windows スクリプト ホスト (wscript.exe、cscript.exe) で実行している場合にのみ使用できます。Internet Explorer (ieexplorer.exe、mshta.exe) ではない

これを行う簡単な方法は、エラーが発生するまで false に設定されるグローバル変数を宣言することです。エラーが発生した場合、その変数は true に設定されます。その後、その変数がチェックされるたびに、sub\function を終了できます。 \for\do\何でも。

例:

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関数のAdd を忘れないでください。

于 2016-06-04T22:50:14.227 に答える
0

次のようなエラーを発生させることもできます。Err.Raise 507

このエラーにより、現在のスクリプトが終了します:"An exception occurred".

于 2014-05-15T00:38:26.243 に答える