つらつら Excel VBA

私の備忘録です。

処理の停止

VBA実行中に処理を停止したい時の案。
停止検知時にメッセージボックスでも出せば、再開or終了とかもできそう。

UserForm作ってコマンドボタン2個、ラベル1個配置して以下を張り付け。

Private Sub CommandButton1_Click()
    
    Dim i As Long
    bStop = False 'フラグ初期化
    
    'Me.CommandButton1.Enabled = False
    'Me.CommandButton2.Enabled = True
    'Me.CommandButton2.SetFocus
    
    For i = 1 To 1000000000
        Me.Label1.Caption = i
        DoEvents
        If bStop = True Then Exit For
    Next
    
End Sub

'処理中止
Private Sub CommandButton2_Click()
    bStop = True
    'Me.CommandButton1.Enabled = True
    'Me.CommandButton2.Enabled = False
    'Me.CommandButton1.SetFocus
End Sub

'フォーム終了時にもフラグを立てる
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    bStop = True
End Sub