HOME > VBAサンプル集 > VBA高速化

画面更新の表示、非表示

 数行、数十行の単純なコードであればVBAの処理スピードは気になりませんが、複雑な作業を繰り返すような、高度な処理になってくると処理スピードが気になってきます。

 そのような場面になってきたら、今回紹介する方法を利用してみてください。大幅な高速化が実現します。まずはその一つ、画面更新の表示、非表示です。

 この機能はコード実行時の画面表示をストップしてしまうので、かなりの高速化が期待できます。

・Application.ScreenUpdating = False

イベントの停止

 この方法はVBA実行時にエクセルに発生するイベントを停止する方法です。

 プログラム中にイベントを発生させたいポイントがあれば、一時的に機能を復活し、ふたたびイベントを停止して処理を続行させることができます。

・Application.EnableEvents = False

自動計算の停止

 この方法はセルの自動計算を手動計算にすることにより、VBA処理を高速化する物です。コード実行中は手動なので、計算しませんが、最終的に自動計算に戻すので、コード終了時にはちゃんと計算された状態になります。

・Application.Calculation = xlCalculationManual

確認メッセージの停止

 コード実行時の警告メッセージや、確認のメッセージを停止します。メッセージを停止するのでいちいちコードを止められることはありません。

 しかし、警告メッセージや、確認のメッセージを停止する場合はコード処理への影響がないか、十分に確認してから利用しましょう。

・Application.DisplayAlerts = False

・VBA高速化
Sub sample001()


   Application.ScreenUpdating = False        '画面描画を停止
   Application.EnableEvents = False         'イベントを抑止
   Application.DisplayAlerts = False         '確認メッセージを抑止
   Application.Calculation = xlCalculationManual  '計算を手動


End Sub
・VBA高速化の解除
Sub sample002()


   Application.ScreenUpdating = True
   Application.EnableEvents = True
   Application.DisplayAlerts = True
   Application.Calculation = xlCalculationAutomatic


End Sub

エクセル職人        VBAサンプル集目次

▲TOPへ移動