[Excel] マクロで「応答なし」を回避する方法
背景:Excelのマクロがloopを含み、長い時間がかかる場合、「応答なし」になる
解決手段:ループの中に、DoEvents 関数を入れる
例:
For i = 1 To 1000
(計算)
DoEvents
Next
備考:
1)「応答なし」という表示はWindowsが出している
2)DoEvents 関数は、一時的にOSに制御を移す関数
3)これによる計算時間アップは、通常、ほぼ無視できる程度
4)マクロ計算時間短縮は、非常に効果がある
5)これには、以下の方法で、表示機能を停止させる
ループ処理の前に
Application.ScreenUpdating = False
処理後に
Application.ScreenUpdating = True
6)これでは進行状況が見えないので、下部のステータスバーに表示させる
例:Application.StatusBar = "I=" & i & "を計算中"
処理後に、
Application.StatusBar = False
7)ただし、これは「応答なし」回避には役立たないし、「応答なし」状態では、表示が変化しない
8)MsgBoxを表示すると、OKボタンを押すまで処理が中断してしまうので、不便
| 固定リンク | 1
「パソコン・インターネット」カテゴリの記事
- [IrfanView] 画像の座標や輝度値を表示させるには?(2025.03.26)
- テレビでYoutube広告をスキップする方法(2024.09.22)
- [動画]字幕の時間調整をする方法(2024.09.14)
- [Windows10] フォルダ表示形式の統一方法(2024.09.09)
- [Word] 図形や画像が印刷できない(2024.08.31)
コメント