VBAサンプル集
マクロVBAの開始時と終了時に指定しておくべきApplicationのプロパティ

ExcelマクロVBAの実用サンプル、エクセルVBA集と解説
公開日:2013年5月以前 最終更新日:2020-08-17

マクロVBAの開始時と終了時に指定しておくべきApplicationのプロパティ


マクロVBAの開始時および終了時に指定した方が良いApplicationのプロパティの開設です。
特に重要なもの、マクロVBAの処理速度に関係するものを紹介します。


Applicationのプロパティの詳細については以下をご覧ください。。

第57回.Applicationのプロパティ(マクロ高速化と警告停止等)
・Applicationの主要プロパティ ・ScreenUpdating(マクロVBAの高速化) ・DisplayAlerts(警告停止) ・Interactive(ユーザー操作の禁止) ・Calculation(計算方法) ・StatusBar ・Cursor ・その他
Applicationのプロパティ、メソッド、イベントの一覧
・Applicationオブジェクトのプロパティ一覧 ・Applicationオブジェクトのメソッド一覧 ・Applicationオブジェクトのイベント一覧

マクロVBA開始時

Sub マクロ開始()
  Application.ScreenUpdating = False '画面描画を停止
  Application.Cursor = xlWait 'ウエイトカーソル
  Application.EnableEvents = False 'イベントを抑止
  Application.DisplayAlerts = False '確認メッセージを抑止
  Application.Calculation = xlCalculationManual '計算を手動に
End Sub

※マクロVBA終了時に初期状態に戻す場合は、設定前に変数に保存しておくようにしてください。

マクロVBA終了時

Sub マクロ終了()
  Application.StatusBar = False 'ステータスバーを消す
  Application.Calculation = xlCalculationAutomatic '計算を自動に
  Application.DisplayAlerts = True '確認メッセージを開始
  Application.EnableEvents = True 'イベントを開始
  Application.Cursor = xlDefault '標準カーソル
  Application.ScreenUpdating = True '画面描画を開始
End Sub

Applicationのプロパティ解説

Application.ScreenUpdating ・・・ 画面表示の更新を制御

マクロVBAの実行中に画面表示の更新を止めて、マクロを高速に処理されるようにします。
マクロの先頭の方で、
ScreenUpdating = False
こうすることで、マクロ実行中の画面表示が更新されないので、
その画面更新にかかる時間が不要になり、それだけ早く処理が終了します。

マクロが終了すると、自動的に画面表示が更新されますが、
マクロの最期で、
ScreenUpdating = True
として、明示的に書いておく方が良いでしょう。

Application.Calculation ・・・ 計算方法の設定

計算モードを変更します。
設定値
xlCalculationAutomatic:自動
xlCalculationManual:手動
xlCalculationSemiautomatic:データテーブル以外の自動
Calculation = xlCalculationManual
この記述をすることで、
これ以降、自動計算は行われなくなります。

この設定は、マクロ終了後も引き続き有効となりますので、
マクロVBA終了時に、
Calculation = xlCalculationAutomatic
これで自動計算に戻しておきます。

Application.StatusBar ・・・ ステータスバーの文字列を設定

マクロVBA内で、ステータスバーを使用していなければ、不要です。

ステータス バーに文字列を設定します。
StatusBar = "文字列"
これで、ステータスバーに文字列が表示されます。
ステータス バーの文字列を既定値に戻すには、
StatusBar = False
とすることで、それまでに表示していた文字列は消されます。

Application.EnableEvents ・・・ イベントの発生の制御

イベント処理を使用しない場合は、不要です。

Application.EnableEvents = False
これで、新たなイベント発生が停止されます。
Worksheetのイベントプロシージャー|マクロVBA入門
・Worksheetのイベント ・イベントプロシージャー追加のVBE操作 ・Activate:Worksheetのイベント ・BeforeDoubleClick:Worksheetのイベント ・BeforeRightClick:Worksheetのイベント ・Change:Worksheetのイベント ・SelectionChange:Worksheetのイベント ・全てのシートまたは複数のシートに対するイベント
特に、WorksheeetのChangeを使用する場合、
イベント発生を停止しておかないと、VBAでセル値を変更しても新たにWorksheet_Changeが実行されてしまいます。
結果的に、イベントの連鎖が起こり、無限ループが発生してエラーとなります。

この設定は、マクロ終了後も引き続き有効となりますので、
マクロVBA終了時に、
Application.EnableEvents = True
これで、新たなイベント発生が発生するようになります。
これを入れ忘れると、プロシージャー終了後も新たなイベントが発生しなくなります。

Application.Cursor ・・・ カーソル形状

マウスポインターの形状を設定します。
必須というほど重要ではありません。
ただし、マクロVBA実行中にカーソルが頻繁にちらつくような場合は、この設定により処理速度が向上します。

設定値 ポインター形状
xlDefault 標準のポインター
xlIbeam I 字型ポインター
xlNorthwestArrow 矢印型ポインター
xlWait 砂時計型ポインター

Application.Cursor = xlWait
これでマウスポインターは砂時計型ポインターになります。

この設定は、マクロ終了後も引き続き有効となりますので、
マクロVBA終了時に、
Application.Cursor = xlDefault
これで標準に戻しておきます。

マクロが途中で終了した場合

もしマクロが途中でストップしてしまい、マクロ終了のVBAが実行されなかった場合は、
手動で、マクロ終了のプロシージャーを実行するようにして下さい。

上記以外にも、開始終了時に指定するものはありますが、
とりあえず、このくらいを押さえておけば問題ないでしょう。



同じテーマ「マクロVBAサンプル集」の記事

他ブックを開いて閉じる(Open,Close)
ブックを開かずにセル値を取得(ExecuteExcel4Macro,Excel.Application)
罫線を簡単に引く(Borders,BorderAround)
マクロVBAの開始時と終了時に指定しておくべきApplicationのプロパティ
オートフィルター(AutoFilter)
日付のオートフィルタ(AutoFilter)
印刷ダイアログを使用する(xlDialogPrint)
名前定義の一覧と削除(Name)
シートを名前順に並べ替える
数式内の不要なシート名を削除する(HasFormula)
数式の参照しているセルを取得する


新着記事NEW ・・・新着記事一覧を見る

カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)
2段階の入力規則リスト作成:最新関数対応|エクセル関数応用(2025-12-24)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ