Excelマクロ実行時の”応答なし”を解除する方法
単体テストでは、問題なかったがモジュールを組合わせて連続で実行すると、よく出現する現象でプログラムが正常終了すると、またExcelに制御が戻り復活するが、あまり気持ちの良いもんではないのと、ホワイトアウト中は、マクロを{ESCキー}で終了させることが出来ない。
修正手順
- 使用しているVBAモジュール内に一番処理時間が掛かっていそうなLoop処理を探す
- DoEvents 関数を1行挿入する(ループ内でしか利用できないので注意!)
VBAサンプルで説明 「DoEvents 関数」 挿入箇所
sub loop_test
Dim i as integer,j as integer
for i=1 to 12
for j=1 to 1000
Cells(j + 1, i) = (i - 1) * 1000 + j
'''処理省略
next j
next i
end sub
上記サンプルを単体実行するとエラー表示はしないが、複数のモジュールを繋げて実行するようなモジュールを作成しそれを実行すると、 Excelタグに”応答なし”と表示されホワイトアウトする。この場合繋げたモジュールを1つ1つ確認した中で、Loop処理が一番長いこのモジュールでエラーになっていると考えるのが妥当。
DoEvents 関数を挿入するだけだが、どこに入れるか?
sub loop_test
Dim i as integer,j as integer
for i=1 to 12
➀
for j=1 to 1000
➁
Cells(j + 1, i) = (i - 1) * 1000 + j
'''処理省略
next j
next i
end sub
「DoEvents関数」はLoop内でなければ効果がない!
「DoEvents関数」はLoop内でなければ効果がない!
ので、上記サンプルだと➀か➁ということになる。
- ➀に入れてテスト
- これでもまだエラーが出るようなら➁に入れてテスト
- これでもまだエラーが出る場合はこのモジュールではないと判断
- 違うLoop処理を使っているモジュールを探し出し、同じ手順でエラーがなくなるまで探す
といった具合で該当するモジュールを発見し「DoEvents関数」を埋め込み対処する。
自分でVBAを使うだけならExcelのホワイトアウトは大きな問題ではないが、
対処の仕方を知っているのと知らないのとでは、仕事する上では信頼度が大きく変化する。
編集後記
ExcelVBA本(プログラミング本)の選び方のコツ
- Amazon-Primeで物色
- Kindle-Unlimitedで物色
- 巻末の索引で「自分の探している命令」が載っている
- 目次で当たりを付ける
- 大型ブックオフ店で探す
- 大型書店で探す
- Amazonの★を気にしない
Excel VBA 逆引き大全 600の極意 Microsoft 365/Office 2021/2019/2016/2013対応
Excel VBA 逆引き大全 600の極意 Microsoft 365
※私が持っているのが2016年版(以下は2016)
- ExcelVBAの基本構文
- セルの操作
- 関数
- ワークシート、ウィンドウの操作
- ブック操作
- データ操作
- テーブル・ピボットテーブル
- 図形
- グラフ
- ユーザーフォーム
- 印刷
- ファイルとフォルダ
- データ連携
- イベント
- バージョン・トラブルシューティング・エラー処理
- 高度なテクニック
- 索引
目次が巻頭で検索が巻末。昔のタイプの本の構成だが、索引がページでなくTipsという見出しNo.になっていて慣れるまでは検索しづらい。
Amazonレビューは★3.9
パソコン処理の半自動化
2024.01.23 4:08時点
Amazonアソシエイト画像が使えなくなった部品の修正をポチポチと地道にやっているのだが、たまたま
「Power Automate Desktop」をクリックしたところ、昔とかなり表示が変わっているように感じたのでMs-Edgeからログインしてみた。
まだ使ってはいないが、2024年はPythonよりも使う機会が多くなりそうかな!?
という印象。
昔と違いスキルとサンプルが足りない分は、ChatGPTがあるからね~
なんとかなりそうな気がしている。UWSCで出来ることは最終的にUWSCで良いが、簡単に「Power Automate Desktop」で作成できるなら、こちらを選択した方が簡単に部品化できるはず!という漠然とした思いがある。
それでは、またね~~😎