タイトル : Re^3: CommandBottonイベント 投稿日 : 2008/05/19(Mon) 19:02 投稿者 : 魔界の仮面弁士
> 説明が足りなく申し訳ないです。CommandBotton1_Click()で処理開始、 > CommandBotton1_Click()内で同じCommandBotton1でキャンセル出来ないかなと考えておりました。 それだけなら、ボタンを同じ座標に重ねて置いといて、Visible プロパティを 切り替えて見せた方が、処理が複雑化しなくて済むかも。 で、同一ボタンのキャンセルについては、そもそも「処理」の内容によって キャンセル可能かどうかが決まるでしょうけれども、たとえば…… Option Explicit Private IsBusy As Boolean Private HasCancelRequest As Boolean Private Sub CommandButton1_Click() If IsBusy = False Then If MsgBox("処理を開始します。", vbOKCancel) = vbCancel Then Exit Sub End If CommandButton1.Caption = "中止" Sample Else HasCancelRequest = True End If End Sub Private Sub Sample() IsBusy = True HasCancelRequest = False '実験用のダミー処理として、10秒待機 Dim d As Date d = DateAdd("s", 10, Now) Do Until Now > d Dim s As String s = FormatDateTime(Now) If Me.Caption <> s Then Me.Caption = s End If DoEvents If HasCancelRequest Then Exit Do End If Loop If HasCancelRequest Then MsgBox "キャンセルされました" End If CommandButton1.Caption = "開始" IsBusy = False End Sub 上記に加えて、処理中はフォームを閉じられないようにしておくなどといった、 追加の制御が必要かも。 |