VBAで応答なしにならないようにDoEventsをパフォーマンスを下げずに使う方法

 

VBAで時間のかかる処理をすると画面が更新されなかったり、Windowsから(応答なし)扱いされたりします。
それをさけるためにはDoEventsを呼び出すのですが、いろいろなコード例がありましたが、
以下のコードが一番効果があったように思います。

http://www.sunvisor.net/parts/doevents

<宣言>
Private Declare Function GetInputState Lib “USER32” () As Long 2
Private m_Time As Variant

 

<処理>
Dim iintLoop As Integer
For iintLoop = 1 To 30000
‘ここで時間のかかる処理を実行
If GetInputState() Or (DateDiff(“s”, m_Time, Time) > 1) Then
DoEvents
m_Time = Time
End If
Next iintLoop



コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください