goo blog サービス終了のお知らせ 

開発頭-kenken

写真付きで日記や趣味を書くならgooブログ

最近node.jsが気になってきました。

VBAで処理中断ボタンの作り方

2011-05-26 21:36:34 | Access・VBA

参照したページ

処理中にキャンセルしたいとき、DoEventsを使って他のイベントを受付けることができるらしい。

<プログラム>
Dim bCancel As Boolean 'キャンセルボタンの実行有無

'実行ボタンの処理
Private Sub OK_Click()
  DoCmd.Hourglass True 'カーソルを砂時計にする
  bCancel = False
  Do
    ・
    ・
    DoEvents '他のイベントを処理する
    If bCancel = True Then Exit Do 'キャンセルボタンが押された?
  Loop
  If bCancel = True Then 'キャンセルボタンが押された?
     'キャンセル時の処理
  End If
  DoCmd.Hourglass False 'カーソルを元に戻す
End Sub
  ・
'キャンセルボタンの処理
Private Sub Cancel_Click()
  bCancel = True
End Sub


■VBA例の説明
実行処理のループ処理内の最後にDoEventsにより他のイベント処理を行います。 例題ではキャンセルボタンの処理ではbCancelをTrueに変更しています。 そしてイベント処理が終了したならばbCancelの状態をチェックすればよいことになります。

■注意事項
このDoEventsは全てのイベント処理を受け付けてしまいます。 つまり、処理実行中に自分の処理である実行ボタンも実行できたり、テキストボックスにも入力可能になります。 その結果、処理結果が保証できなくなりますのでキャンセルボタン以外は実行しないようにします。
マウスポインタを変更するDoCmd.HourglassはAccessVBAのみでExcelVBAでは使用できません。 Excelのフォームモジュールのみで使用可能ですが、砂時計にするにはMe.MousePointer = fmMousePointerHourGlass
元に戻すにはMe.MousePointer = fmMousePointerArrowになります。


最新の画像もっと見る

コメントを投稿