VBAマクロ、特に多くのセルを操作するループ処理などを実行した際に、「処理が遅い」「画面がチカチカして見づらい」と感じたことはありませんか?
その原因は、ExcelがVBAによる一つ一つの操作を、律儀に画面へ逐一描画しているからです。
この記事では、この画面描画を一時的にオフにすることで、VBAマクロの処理速度を劇的に向上させる、最も基本的で効果的なテクニックApplication.ScreenUpdatingを解説します。
なぜ画面の更新を止めると速くなるのか?
VBAがCells(1, 1).Value = "A"のようなコードを実行すると、Excelはその結果を即座に画面に反映(再描画)しようとします。これを1万回繰り返すループ処理では、1万回の画面更新が発生します。
画面描画は、コンピュータにとって非常に負荷の高い処理です。そのため、処理の大半が「画面の更新」という待ち時間に費やされ、マクロ全体のパフォーマンスが著しく低下します。
Application.ScreenUpdating = Falseは、この描画処理を**「マクロがすべて終わるまで一旦ストップして、最後に一度だけ結果を描画して」**とExcelに指示する命令です。これにより、無駄な待ち時間がなくなり、VBAは本来の処理能力を最大限に発揮できます。
完成したVBAコード(エラー処理を含む推奨パターン)
ScreenUpdatingをFalseにした場合、万が一マクロがエラーで中断すると、画面が更新されないままになってしまう危険があります。それを防ぐため、エラーが発生しても必ずTrueに戻すエラーハンドリングを組み込むのが鉄則です。
Sub FastProcessingWithScreenUpdating()
'--- 1. 処理の最初に画面更新をオフにする ---
Application.ScreenUpdating = False
' エラーが発生しても必ず画面更新をオンに戻すための準備
On Error GoTo ErrorHandler
'--- 2. メインの処理 ---
' (例:10000個のセルに値を入力する重い処理)
Dim i As Long
For i = 1 To 10000
ThisWorkbook.Worksheets("Sheet1").Cells(i, 1).Value = "Test " & i
Next i
'--- 3. 処理の最後に必ず画面更新をオンに戻す ---
ExitRoutine:
Application.ScreenUpdating = True
MsgBox "処理が完了しました。"
Exit Sub ' エラーハンドラを通過させないため
ErrorHandler:
' エラー発生時にここへジャンプ
MsgBox "エラーが発生しました: " & Err.Description, vbCritical
' 画面更新をオンに戻すため、ExitRoutineへ進む
Resume ExitRoutine
End Sub
パフォーマンスの比較
ScreenUpdatingの効果を体感するために、以下の2つのコードを実行して速度を比較してみてください。
'--- Before: 画面更新がオンのまま(遅い) ---
Sub SlowLoop()
Dim i As Long
For i = 1 To 20000: Cells(i, 1).Value = i: Next
End Sub
'--- After: 画面更新をオフ(速い) ---
Sub FastLoop()
Application.ScreenUpdating = False
Dim i As Long
For i = 1 To 20000: Cells(i, 1).Value = i: Next
Application.ScreenUpdating = True
End Sub
データ量によっては、処理時間が数十倍から数百倍も変わることが分かります。
まとめ
VBAマクロの高速化における、最も重要で、最初に覚えるべきパターンは以下の通りです。
- マクロの開始直後に
Application.ScreenUpdating = Falseを記述する。 - (推奨)エラーが発生しても必ず元に戻るよう、エラーハンドリングを記述する。
- マクロの終了直前に、必ず
Application.ScreenUpdating = Trueを記述して画面更新を元に戻す。
大量のセル操作、シートの追加・削除、書式設定など、画面に変化が起きるほとんどの処理は、このおまじないで囲むだけで劇的に高速化します。VBAのパフォーマンスに悩んだら、まず最初にこの設定を見直してみてください。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
