処理過程を表示させないことで、パフォーマンスの向上をねらいます。
●詳細●
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にもどらないこともあるようです。
サンプルが終了すると、ScreenUpdatingプロパティは自動的にTrueに戻ります。(3)のステートメント実行時には、まだ画面更新を行っていないので、画面上の選択セルは、セルA1のままですが、終了とともにセルJ100が選択された状態に画面が更新されます。なお、Excel97では、自動的にTrueにもどらないこともあるようです。