« [Word2010] コメントの書式変更方法 | トップページ | [Excel] マクロで、ループの途中から抜ける方法 »

[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ボタンを押すまで処理が中断してしまうので、不便

|

« [Word2010] コメントの書式変更方法 | トップページ | [Excel] マクロで、ループの途中から抜ける方法 »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/217579/61271454

この記事へのトラックバック一覧です: [Excel] マクロで「応答なし」を回避する方法:

« [Word2010] コメントの書式変更方法 | トップページ | [Excel] マクロで、ループの途中から抜ける方法 »