HOME > 即効テクニック > Excel VBA > ウィンドウ操作関連のテクニック > 画面更新を制御する(ScreenUpdatingプロパティ)

即効テクニック

ウィンドウ操作関連のテクニック

画面更新を制御する(ScreenUpdatingプロパティ)

( - )
処理過程を表示させないことで、パフォーマンスの向上をねらいます。

●詳細●
ScreenUpdatingプロパティがTrueの場合、プログラムの処理過程が画面に更新されます。Falseの場合、プログラムが終了するか、再びTrueを設定されるまで画面が更新されません。処理速度を向上させたい場合や、画面のちらつきを無くしたいにはFalseを設定してください。

  構文  Object.ScreenUpdating     設定/取得

  設定項目              内容
  Object                Applicationオブジェクト [省略不可]

次のサンプルを実行すると、画面更新をしないことの効果が実感できるはずです。
●サンプル●
Sub ScreenUpdatingSamp1()
    Dim i As Integer

    MsgBox "1000個のセルを選択して、画面をスクロールさせていきます"
    For i = 1 To 1000
        Application.Goto Range("A1:J100").Cells(i), True   '---(1)
    Next i
    MsgBox "完了しました"
    Application.Goto Range("A1")
    MsgBox "次は画面更新を行ないません"
    Application.ScreenUpdating = False       '---(2)
    For i = 1 To 1000
        Application.Goto Range("A1:J100").Cells(i), True
    Next i
    MsgBox "完了しました"                    '---(3)

End Sub
(1)のステートメントでは、Gotoメソッドを使用して、セルを選択するとともに画面をスクロールさせています。(2)のステートメント以降は画面更新をしない設定になっています。2回目の処理は1回目に比べると早く終わるのが実感できると思います。
サンプルが終了すると、ScreenUpdatingプロパティは自動的にTrueに戻ります。(3)のステートメント実行時には、まだ画面更新を行っていないので、画面上の選択セルは、セルA1のままですが、終了とともにセルJ100が選択された状態に画面が更新されます。なお、Excel97では、自動的にTrueにもどらないこともあるようです。