5

別のサブルーチン (CMOV2) を呼び出すマクロ (CMOV) があります。このサブルーチンは、満たされた場合に vbokaycancel メッセージ ボックスを表示する条件をチェックします。

誰かがキャンセル(irep = 2)を押してマクロ全体を中止した場合に欲しいです。それは、CMOV2 を終了するだけでなく、CMOV を終了することでもあります。

現在、私は

If jackal(1) <> vbNullString Then
    irep = MsgBox("Warning: You have a selection with two swingarms" _
          & " that are on the same radius and cannot swing past one another " _
          & Chr$(13) & " Choose Okay if you still wish to proceed otherwise " _
          & " choose Cancel to revise your order" & Chr$(13) & "         " _
          & jackal(1) & Chr$(13) & "      " & jackal(2), vbOKCancel)
    **If irep = 2 Then
    Exit Sub**
    Else: End If
    Else: End If
End Sub

サブルーチンの最後に。問題は、これが CMOV2 を終了しても、CMOV が引き続き実行されることです。このサブとそれを呼び出したサブを終了する方法はありますか?

4

2 に答える 2

5

上部でブール変数を宣言しTrue、ユーザーがキャンセルを押した場合に設定します。ここに例があります。

Dim ExitAll As Boolean

Sub CMOV()
    '
    '~~> Rest of the code
    '

    ExitAll = False

    CMOV2

    If ExitAll = True Then Exit Sub

    MsgBox "Hello World"

    '
    '~~> Rest of the code
    '
End Sub

Sub CMOV2()
    '
    '~~> Rest of the code
    '
    If jackal(1) <> vbNullString Then
        irep = MsgBox("Some Message", vbOKCancel)
        If irep = 2 Then
            ExitAll = True
            Exit Sub
        End If
    End If
    '
    '~~> Rest of the code
    '
End Sub
于 2013-09-13T18:45:11.700 に答える