[PR]今日のニュースは
「Infoseek モバイル」

VBA閻魔帳

 ●実行速度を速くするScreenUpdating

ScreenUpdating プロパティ

VBAの解説を載せておきます^^
このプロパティを使うときは、一連のプログラムを完成した後、
これを使用することをお奨めします。
途中でエラーが生じたとき、画面が止まった状態になって
( iдi ) ハウー てなことになってしまうので 注意してくださいね

True の場合、マクロの実行中に画面表示を更新します。値の取得および設定が可能です。
ブール型 (Boolean) の値を使用します。

解説

マクロの速度を向上させるため、画面を更新しないようにします。
この場合、マクロの処理過程は見ることができませんが、実行速度が速くなります。

マクロの終了した後は、ScreenUpdating プロパティの値を True に戻してください。

ScreenUpdating プロパティの使用例

次の使用例は、画面表示の更新をオフにすることで、
どのくらいコードの実行を速くできるのかを示します。
シート 1 の列を 1 行おきに非表示にする操作を 2 回行い、
それぞれの操作にかかる時間を調べます。
1 回目の操作では、画面表示の更新はオンになりますが、
2 回目のときにはオフになります。実行すると、それぞれの操作の
所要時間がメッセージ ボックスに表示されます。

Dim elapsedTime(2)
Application.ScreenUpdating = True
For i = 1 To 2
    If i = 2 Then Application.ScreenUpdating = False
    startTime = Time
    Worksheets("Sheet1").Activate
    For Each c In ActiveSheet.Columns
        If c.Column Mod 2 = 0 Then
            c.Hidden = True
        End If
    Next c
    stopTime = Time
    elapsedTime(i) = (stopTime - startTime) * 24 * 60 * 60
Next i
Application.ScreenUpdating = True
MsgBox "更新がオンの状態での所要時間は " & elapsedTime(1) & _
        "  : " & Chr(13) & _
        "更新がオフの状態での所要時間は " & elapsedTime(2) & _
        " "

Application.ScreenUpdating = False ・・・画面のうごきをとめる
Application.ScreenUpdating = True ・・・画面のうごきをもとにもどす