VBA – 画面更新を無効にする
In this Article
VBAマクロが画面を操作している様子はとてもクールですが、ScreenUpdating(画面の更新)を無効にすると、マクロの実行速度が向上します。
ScreenUpdatingを無効にする
1.ScreenUpdatingを無効にするには、コードの最初に次の行を記述します。
Application.ScreenUpdating = False
ScreenUpdatingを有効にする
2.ScreenUpdatingを再び有効にするには、コードの最後に次の行を記述します。
Application.ScreenUpdating = True
VBA ScreenUpdatingの例
プロシージャは、次のようになります。
Sub ScreenUpdating_Example()
Application.ScreenUpdating = False
'何らかの処理を実施
Range("a1").Copy Range("b1")
Range("a2").Copy Range("b2")
Range("a3").Copy Range("b3")
Application.ScreenUpdating = True
End Sub
ScreenUpdatingのリフレッシュ
ScreenUpdating を無効にすると、VBA コードの実行速度が大幅に向上するだけでなく、あなたの作成したマクロがより専門的に見えるということでもあります。エンドユーザーは通常、プロシージャの舞台裏を見たいわけではありません。(特にプロシージャの実行速度が遅い場合。)むしろ、エンドユーザーに舞台裏の機能(例:ワークシートを非表示にする)を見せたくない場合もあります。私は、ほぼすべてのプロシージャで ScreenUpdating を無効化(および再有効化)することを推奨します。
しかし、画面を更新したい場合もあります。画面を更新するには、一時的にScreenUpdatingをオンに戻す必要があります(画面の「更新」コマンドは存在しません)。
Application.ScreenUpdating = True
'何らかの処理を実施
Application.ScreenUpdating = False
VBAの設定 – コードの高速化
コードの速度を向上させるために、他にもいくつかの設定を行うことができます。
自動計算を無効にすると、スピードに大きな差が出ます。
Application.Calculation = xlManual
また、ステータスバーを無効にすることでも若干の差が出ます。
Application.DisplayStatusBar = False
ワークブックにイベントが含まれている場合は、通常、プロシージャの最初にイベントを無効にする必要があります。
Application.EnableEvents = False
最後に、Excelが改ページを再計算しようとすると、VBAコードが遅くなることがあります。(注:すべてのプロシージャが影響を受けるわけではありません。) 改ページを表示しないようにするには、次のコード行を使用します。
ActiveSheet.DisplayPageBreaks = False
VBAのコーディングが簡単に
VBAのコードをオンラインで検索するのはもうやめましょう。AutoMacro – A VBA Code Builderを使えば、初心者が最小限のコーディング知識でゼロから手順をコーディングでき、ベテランのユーザーでも時間を節約するのに役立つ多くの機能を備えています!詳細については、こちらをご覧ください。