マクロVBAを使用する上で誤って別のプロシージャを実行したり
処理時間が長くてコードの実行を途中で止めたい場面があると思います。
その際に通常のメニューにある実行の停止はグレーアウトして
選択できないため、プログラム実行が終わるまで待つ方もいるのではないでしょうか。
そこで今回はキーボード操作のみでできる実行中のコードを
停止させる方法について紹介します。
作業自体もとても簡単なので是非参考にしてみてください。
それでは見ていきましょう。
⬛︎こんなことができるようになる!
・実行中のプロシージャを強制的に途中停止できる。
・処理中のコードを途中停止できる
⬛︎実行コードを強制停止・終了する
では本題に入っていきましょう。
見本で下記のような簡単なコードを用意しました。
Sub 繰り返し処理() Dim Time1 As Double, Time2 As Double, Result As Double Dim Cycle As Long Time1 = Timer For Cycle = 1 To 1000 Step 1 Cells(1, 1) = "=SUM(D:D)" Cells(1, 1) = "=SUM(D:D)" Cells(1, 1) = "=SUM(D:D)" Next Cycle Time2 = Timer Result = Time2 - Time1 MsgBox Result & "秒で処理しました" End Sub
内容としてはセル番地A1からA3にD列の合計の算出を
SUM関数を用いて10000回繰り返すコードになります。
見本なので無意味な繰り返しをしていますが
こちらを実行すると「138秒」かかってしまいます。
一度実行してしまうと止まるまでに約2分待たないといけないので
誤動作時にはとてもめんどくさいです。
こちらを実行中に途中で止めてみましょう。
使用するキーは「エスケープキー」になります。
大半のキーボードでは左上に配置されており「Esc」と記されていると思います。
では実際に「Escキー」を活用してみましょう。
活用方法は簡単で、実行中に押すのみです。
では先程のコードを実行して「Escキー」を押してみたいと思います。
結果はこのようになりました。
「コードの実行が中断されました。」というメッセージが表示されました。
よく、エラー時に表示されるメッセージです。
では確認も含めてデバッグを押してみましょう。
変数Nは本来であれば10000回繰り返しますが
543回で止まっています。
つまり強制的に停止が出来たことになります。
とても簡単ですね。
⬛︎停止後の復帰方法
ここからは停止の復帰方法です。
デバッグ作業をされた事がある方は復習になりますが
一連の復帰方法を見ていきましょう。
・完全に実行を中断したい場合
現在の状態はあくまで強制停止状態にあります。
なので、そこから再度実行もできますし、デバッグもできます。
今回は完全に実行を中断するわけですから
先程のメッセージから「終了」を押します。
これで強制終了が終わりました。
注意点として、どこまでのコードが実行されたかは
確認が出来ないのでシートを確認して現状を把握する必要があります。
どこまでのコードが実行されたか確認する方法は次の項目で説明します。
・どこまでのコードを実行したか確認して終了する
今度はどこまでのコードが実行されたか確認して終了する手順を紹介します。
「Escキー」を押した後にでるメニューか「デバッグ」を選択します。
すると黄色く塗りつぶされた行があるのですか
そこまでコードが実行されたことを示します。
見本のように繰り返し動作の場合は変数を確認すれば何回まで繰り返し処理が行われたか確認することが出来ます。
その後、「リセット」ボタンにて停止中のプロシージャを
完全に中断することができます。
・コード実行を再開したい場合
最後にコードの実行を再開したい場合を見ていきましょう。
まずは、アラーム時の復帰から見ていきます。
操作は簡単でメニューにある「継続」を押せば、動作を再開してくれます。
次に「デバッグ」で停止させた後に再開の方法を見ていきましょう。
こちらは「F5」キーまたは「ユーザーフォームの実行」ボタンでコード実行の再開を行うことができます。
もちろん再開後も再度、「Esc」キーで停止させることも可能です。
■Escでも強制終了できない場合
Escキーでも止まらない場合はタスクマネージャーで停止させることも可能です。
しかし、先ほどまでの停止方法とは異なり、Excel自体の強制終了になるので
上書き保存をしていないと、前回の保存以降の処理が消えてしまうので注意が必要です。
では方法を見ていきましょう。
まずキーボードの「Ctrl」+「Alt」+「Delete」を押します。
するとメニューが表示されるので「タスクマネージャー」を選択します。
「プロセス」タブに「Microsoft Excel」の項目があると思うので選択します。
最後に「タスクの終了」があるのでこちらを選択します。
するとExcelが強制終了します。
強制終了後のファイルの復元方法については下記記事をご参照ください☟
保存できずに終了・上書きしたエクセルファイルを復元する方法一覧!消えたファイルを元に戻す ► 独学エクセル塾 (dokugakuexcel.com)
いずれもコードの実行前には上書きを推奨します。
⬛︎まとめ
いかがだったでしょうか。
処理に時間がかかるプロシージャを途中で止めたくなった
場合など様々な場面で使用できそうですね。
また「Escキー」のみで操作可能なので
とても簡単な方法になっています。
是非参考にしてみてください。
それでは次回の記事でお会いしましょう。