プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
ExcelVBA、EscキーやCtrl+Pause/Breakキーでの実行中断をさせないようにする
結論から書けば、VBAコード内に

Application.EnableCancelKey = xlDisabled

と書けばOKです。

それでは経緯とかを書いていきますね。

うっかり忘れがちですが、VBAの実行中にEscキーやCtrl+Pause/Breakキーを押すと
こんな画面が出てきて処理が中断しますφ(--)

20140315-01.png


これはよろしくない。
Excelで簡易的なVBAを組むことは多いのですが、それを実際に使うのは事務の人とかです。
処理中にうっかりEscキーを押しちゃうこともあるかもしれないじゃないですか。
そして何かよく分からない画面が出てきたら慌てちゃいます。
プログラム側としても処理が途中で止まってしまうのは決して喜ばしくありません。
VBAの処理中断を無効にしたいな~というのが経緯です。

それでは早速調べてみましょうか。

ふむふむ(--)

コードの先頭とかに

Application.EnableCancelKey = xlDisabled

と書けば良いらしい。
その名の通りキャンセルキーをdisabledにするってことですね。

早速実験してみましょう。

まずは普通の奴から。
こんなコードを動かしてφ(--)

Sub ボタン1_Click()

Debug.Print "start"

For i = 0 To 10000
Debug.Print i
Next

Debug.Print "end"

End Sub

Escキーを押したら処理が中断しました。これは普通。
「Application.EnableCancelKey = xlDisabled」を加えて

Sub ボタン1_Click()
Application.EnableCancelKey = xlDisabled

Debug.Print "start"

For i = 0 To 10000
Debug.Print i
Next

Debug.Print "end"

End Sub

としたら……おぉ、確かに無効になってる。
Escキーを押してもCtrl+Pause/Breakキーを押しても処理が中断しない。

やったー\(--)/

注意点として、このコードを埋めるのは最後の最後にしましょう。
作っている最中は中断できないと困りますからね。
何かの間違いで無限ループとか入ると、ちょっと焦ることになるかもしれません。

そんな感じで、VBAコード実行中断の抑制、完了\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:ExcelVBA  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事