もくじ

taka



最新記事 by taka (全て見る)
- 『雑記』最近の私の話~ - 2019年9月26日
- 【動画】自作パソコン構成変更!ケースをNZXT H500に交換しました! - 2019年6月5日
- VBA 『Array関数』指定した要素で配列を作成する - 2019年5月23日
- 「動画」初完全ワイヤレスイヤホン『Jabra Elite Active 65t』 - 2019年5月17日
- VBA 日付で令和を簡単に判定してみよう - 2019年5月7日
どうも、最近椅子を買い換えてご機嫌のtaka(@takabou63)です(^^♪
さて、前回無限ループを抜け出す方法として「無限ループからの脱出!処理を中断する【Escキー】で無限ループを回避」でご紹介した「Escキー」ですが、良いことばかりではありません(;´∀`)
中断できるのはいいですが、それはほかの人が操作してもできるということ(-ω-)
例えば、繰り返し処理中に「Escキー」を押されてしまった場合、強制中断されてしまうので思ったような処理が出来ていない。とか、Bookのopenイベントに少し重い処理(データベースを読み込みなど)が記述された場合に「Escキー」を押されてしまうと、Excelを非表示設定をしていても表示されてしまうなどの状態になってしまいます(;^ω^)
第三者が触れるシステムの場合、これは致命的な「欠陥」です(ノД`)・゜・。
今回はそんな「Escキー」操作を制御する方法をご紹介します!
EnableCancelKeyプロパティ
さて、「Escキー」を拒否するには「Applicationオブジェクト」の「EnableCancelKeyプロパティ」を使用します。
EnableCancelKeyプロパティの書式
EnableCancelKeyプロパティの書式は以下の通りです。
定数 | 動作 |
---|---|
xlDisabled | Escキーを無視します |
xlInterrupt | プロシージャを停止します(標準) |
xlErrorHandler | エラーを発生させます |
Application.EnableCancelKey=定数
標準では処理の中断である「xlInterrupt」が適応されます。
「Escキー」を無視する「xlDisabled」
EnableCancelKeyプロパティを使って「Escキー」を無視する方法はとても簡単で対象のプロシージャに
Application.EnableCancelKey = xlDisabled
と、定数に「xlDisabled」を追加すれば完了です!
Sub sample() Application.EnableCancelKey = xlDisabled 'Escキーを押しても無視する On Error GoTo MyError Dim cnt As Long For cnt = 1 To 1000000000 cnt = cnt + 1 Next cnt MsgBox "終了しました!" End Sub
「Escキー」でエラーを起こす「xlErrorHandler」
さて続いて「Escキー」が押されたらエラーを発生させる「xlErrorHandler」についてです(^^)/
xlErrorHandlerを設定すると、Escキーが押された時に、エラー番号18が返されます。
If Err.Number = 18 Then
というifを追加することでEscキーが押された場合の処理を書くこともできます(^^♪
下記ではエラー情報を取得するコードを記載してありますので目を通して見てください(^^)/
Sub sample() Application.EnableCancelKey = xlErrorHandler 'Escキーを押すとエラーを発生させる On Error GoTo MyError Dim cnt As Long For cnt = 1 To 1000000000 cnt = cnt + 1 Next cnt MsgBox "終了しました!" MyError: 'エラーが起きるとここに飛ぶ MsgBox "エラーが発生しました、処理を終了します" & vbLf & _ "エラー番号:" & Err.Number & vbLf & _ "エラー内容:" & Err.Description & vbLf & _ "ヘルプファイル名" & Err.HelpContext & vbLf & _ "プロジェクト名:" & Err.Source End Sub
フォロー・チャンネル登録お願いします
VBA以外についてのブログはこちら↓
https://yb-log.com/■Twitterフォロー
Follow @taka_pc1027■YouTubeチャンネル登録
コメントを残す