備忘録として、主にパソコン関係のTipsを記載して行きます。
新着情報 |
@UiPath、メモ
AOffice365、Excel:VBAで画面更新がチラツク時の対策
BOffice365、Excel:勝手に手動計算になる原因
COffice365、Excel:フィルターで3つ以上の条件にする方法
DOffice365、Excel:シート同士の違いを見つける方法 |
Excel2010、VBAで繰り返しが止まる時の対処方法
Excel2010は、手頃な価格で高機能な表計算ソフトです。
ファイル(ブック)には複数のシートを作成できて、色々な表やグラフを作れます。
しかし、Excel2010のVBAで繰り返しが止まる時が有ります。この対策として、繰り返しの途中に
DoEventsを追記すると良くなります。本ページでは、更に改良する方法を検討しました。使用したパソ
コンは、下記のソフトを使用していました。
OS : Windows10(64bit)バージョン1909(OSビルド 18362.657)
表計算ソフト : Excel2010(32bit)
以下、Excel2010、VBAで繰り返しが止まる時の対処方法を記載して行きます。
(項目1)
・Excel2010のVBAで繰り返しが止まる時が有ります。この対策として、繰り返しの途中に
DoEventsを追記すると良くなります。本ページでは、更に改良する方法を検討しました。
(項目2)
・繰り返しの途中で毎回DoEventsを実行すると、実行速度が低下してしまいます。
・そこで、1回/100回の頻度でDoEventsを実行する様にします。
・また、進行状況が分かる様に、ステータスバーの表示も行いました。
(項目3)
・VBAコードは、以下の通りです。
Sub test1()
Dim i As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.DisplayStatusBar = True
i = 20
Do Until Range("B" & i) = ""
Range("C6:F16").Calculate
Range("C16:F16").Select
Selection.Copy
Range("C" & i).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False,_
Transpose:=False
i = i + 1
'100ループに1回実行(フリーズ防止)
If i Mod 100 = 0 Then
'ステータスバーへの表示更新
Application.StatusBar = "i=" & i & "/1000"
'エクセルのイベント処理
DoEvents
End If
Loop
Application.StatusBar = False
Application.Calculation = xlCalculationSemiautomatic
Application.ScreenUpdating = True
End Sub
(項目4)
・以上で、Excel2010、VBAで繰り返しが止まる時の対処方法は終了です。