VBA「Escキー」の中断を制御する「EnableCancelKeyプロパティ」



The following two tabs change content below.

taka

あることがキッカケでVBAを独学で勉強しました、今ではブログを通してVBAでできることを解説しつつ、VBAや他の言語の勉強、ブログ運営の勉強をしています(^^♪

どうも、takaです(^^♪

最近椅子を買い換えてご機嫌のtakaです(^^♪

さて、前回無限ループを抜け出す方法として「無限ループからの脱出!処理を中断する【Escキー】で無限ループを回避」でご紹介した「Escキー」ですが、良いことばかりではありません(;´∀`)

中断できるのはいいですが、それはほかの人が操作してもできるということ(-ω-)

例えば、繰り返し処理中に「Escキー」を押されてしまった場合、強制中断されてしまうので思ったような処理が出来ていない。とか、Bookのopenイベントに少し重い処理(データベースを読み込みなど)が記述された場合に「Escキー」を押されてしまうとExcelを非表示設定をしていても表示されてしまうなどの状態になってしまいます(;^ω^)

第三者が触れるシステムの場合、これは致命的な「欠陥」です(ノД`)・゜・。

今回はそんな「Escキー」操作を制御する方法をご紹介します!

EnableCancelKeyプロパティ

さて、「Escキー」を拒否するには「Applicationオブジェクト」の「EnableCancelKeyプロパティ」を使用します。

EnableCancelKeyプロパティの書式

EnableCancelKeyプロパティの書式は以下の通りです。

定数動作
xlDisabledEscキーを無視します
xlInterruptプロシージャを停止します(標準)
xlErrorHandlerエラーを発生させます

 

標準では処理の中断である「xlInterrupt」が適応されます。

「Escキー」を無視する「xlDisabled」

EnableCancelKeyプロパティを使って「Escキー」を無視する方法はとても簡単で対象のプロシージャに

と、定数に「xlDisabled」を追加すれば完了です!

 

「Escキー」でエラーを起こす「xlErrorHandler」

さて続いて「Escキー」が押されたらエラーを発生させる「xlErrorHandler」についてです(^^)/

xlErrorHandlerを設定すると、Escキーが押された時に、エラー番号18が返されます。

というifを追加することでEscキーが押された場合の処理を書くこともできます(^^♪

下記ではエラー情報を取得するコードを記載してありますので目を通して見てください(^^)/

ファイルやコードの利用、WEBサイトの利用について

サンプルコードなどは当サイトの免責事項をよくお読みになってからお使いください。

Sponsored Link

 

特別企画!IT企業の実情をIT企業の社長に聞いてみた!

独学者が多いVBAプログラマー「せっかくプログラム言語を覚えたし、IT企業に転職しようかな?でも、IT企業って良いイメージ聞かないし実際はどうなんだ?」という疑問にIT企業の社長に直に聞いてみました!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です