参照したページ
処理中にキャンセルしたいとき、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になります。
最新の画像[もっと見る]
-
hello world 7年前
-
クエリーの結果をデータシートビューでポップアップ表示する 11年前
-
クエリーの結果をデータシートビューでポップアップ表示する 11年前
-
リレーションシップでデータシートの3階層入力 12年前
-
リレーションシップでデータシートの3階層入力 12年前
-
リレーションシップでデータシートの3階層入力 12年前
-
データシートの行選択 13年前
-
フォームのデータシート表示で列幅を調整する方法 13年前
-
複数のサブフォームのイベント発生順を変更する。 13年前
-
他mdbのFunction呼び出し 15年前
※コメント投稿者のブログIDはブログ作成者のみに通知されます