VBA入門
Applicationのプロパティ(マクロ高速化と警告停止等)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
公開日:2013年5月以前 最終更新日:2021-09-18

第57回.Applicationのプロパティ(マクロ高速化と警告停止等)


Applicationは、Excel全体をあらわすオブジェクトです
つまり、エクセルそのものだと考えて下さい。
ここでは、そのプロパティの一部を紹介します。


ここで紹介するApplicationのプロパティはほんの一部です。
Applicationは、Excel全体をあらわすオブジェクトなのですから、
このオブジェクトを説明すると言う事は、Excel全てを説明する事になってしまいます。

WorkbooksもApplicationのプロパティですが、
このようなApplicationを省略できるものは省略して書くことが多いので意識せずに使っているものが多くあります。

またApplicationには当然メソッドもあります。
しかしApplicationのメソッドは、その使い方が難しいものが多いので、今後、少しずつ個別に紹介します。

Applicationオブジェクトに含まれるプロパティ・メソッドは、非常にたくさんあります。

Applicationのプロパティ、メソッド、イベントの一覧
・Applicationオブジェクトのプロパティ一覧 ・Applicationオブジェクトのメソッド一覧 ・Applicationオブジェクトのイベント一覧

ここでは、Applicationが省略できないプロパティの中から良く使われるプロパティを紹介します。



Applicationの主要プロパティ

プロパティ 説明
Calculation 計算方法のモード、自動・手動の切り替え
Caller Visual Basic を呼び出した方法についての情報
Cursor ポインターの形状を設定
Dialogs すべての組み込みダイアログ ボックス
DisplayAlerts マクロの実行中に特定の警告やメッセージの表示を制御
EnableEvents 指定されたオブジェクトに対してイベントの発生を制御
FileDialog ファイル ダイアログ
Interactive キーボードやマウスからの入力を受け付けるかどうか制御
ScreenUpdating マクロの実行中に画面表示の更新を制御
StatusBar ステータス バーの文字列を設定

以下では重要かつ頻繁に使われるものだけを順に説明します。


ScreenUpdating(マクロVBAの高速化)

マクロVBAの実行中に画面描画の更新を止めて、マクロが高速に処理されるようにします。
マクロの先頭の方で、

Application.ScreenUpdating = False

こうすることで、マクロ実行中の画面描画が更新されないので、
その画面更新にかかる時間が不要になり、それだけ早く処理が終了します。

マクロが終了すると、自動的に画面表示が更新されますが、
マクロの最期で、

Application.ScreenUpdating = True

このように明示的に書いておく方が良いでしょう。


DisplayAlerts(警告停止)

マクロVBAの実行中に特定の警告やメッセージが表示される事があります。
例えば、シートを削除する場合です。
シート削除するときは、確認メッセージが表示されます。

この応答が出ると、マクロはそこで応答待ちになり、ボタンのクリックが必要になります。
このような、応答が必要なメッセージの表示を止める為に使用します。

Application.DisplayAlerts = False

これで応答メッセージは表示されず、マクロは自動的に次に進むようになります。
マクロが終了すると、自動的に表示する状態になりますが、
マクロの最期で、

Application.DisplayAlerts = True

このように明示的に書いておく方が良いでしょう。

第66回.シートのコピー・移動・削除(Copy,Move,Delete)
・シートのコピー・移動 ・シートの削除 ・シートのコピー・移動・削除の関連記事


Interactive(ユーザー操作の禁止)

キーボードやマウスからの入力の受け付けを停止できます。

Application.Interactive = False

とすると、Falseの間はキーボードやマウスの入力を受け付けなくなります。
ただし、マクロの終了で、自動的には戻りません。

必ず
Application.Interactive = True
として下さい。
忘れると、マクロ終了後もキーボード操作が効かなくなってしまいます


Calculation(計算方法)

計算モードを変更します。

設定値はXlCalculation列挙です。

xlCalculationAutomatic 自動
xlCalculationManual 手動
xlCalculationSemiautomatic データテーブル以外の自動

Application.Calculation = xlCalculationManual

この記述をすることで、
これ以降、自動計算は行われなくなります。
この設定は、マクロ終了後も引き続き有効となりますので、

Application.Calculation = xlCalculationAutomatic

通常は自動計算に戻しておけば通常は良いでしょう。
もし、マクロ実行前の状態に戻す必要がある場合は、
事前に変数に退避しておいて、その変数を戻すようにしてください。

Dim appCalc As XlCalculation '型はVariantでも構いません。
appCalc = Application.Calculation
Application.Calculation = xlCalculationManual
'各種処理・・・
Application.Calculation = appCalc


StatusBar

ステータス バーに文字列を表示します。

Application.StatusBar = "文字列"

これで、ステータスバーに文字列が表示されます。
ただし、高速にVBAが動作している最中は画面の再描画は必ず行われるわけではありません。
適宜、DoEvents をいれて再描画されるようにしてください。

Application.StatusBar = "実行中"
DoEvents

ステータス バーの文字列を消し既定値に戻すには、

Application.StatusBar = False
または、
Application.StatusBar = vbNullString

こうすることで、それまでに表示していた文字列は消えます。


Cursor

マウスポインターの形状を設定します。
マクロVBA実行中にカーソルが頻繁にちらつくような場合は、この設定により処理速度が向上します。

設定値

xlDefault 標準のポインター
xlIBeam I 字型ポインター
xlNorthwestArrow 矢印型ポインター
xlWait 砂時計型ポインター

Application.Cursor = xlWait ← この時点でウエイトカーソルになります。
VBA マクロ Application プロパティ
Application.Cursor = xlDefault ← 標準のカーソルに戻ります。

マクロが終了しても元に戻りませんので、必ず標準(xlDefault)に戻しておきましょう。


その他

上記以外では、
Dialogs
・Application.Dialogsコレクション ・Application.Dialogオブジェクト ・印刷ダイアログの使用例 ・組み込みダイアログの最後に
FileDialog
・FileDialogオブジェクト ・FileDialogの実践例 ・FileDialogの最後に
Caller
メニューのシートを作成して、ボタンを配置、そしてボタンにより指定シートに移動する。よくありますが、ボタン一つずつに別々(移動先のシート毎に)のマクロを作成するのは面倒です、そこで、一つのマクロで済ませる方法の紹介です。Application.Caller Application.Callerは、VBAを呼び出した方…
EnableEvents
・マクロVBA開始時 ・マクロVBA終了時 ・Applicationのプロパティ解説 ・マクロが途中で終了した場合
このあたりも押さえておくべきプロパティになります。
これについては、今後個別に紹介します。



以下も参考にしてください。
マクロの開始・終了(Applicationのプロパティ)

・マクロVBA開始時 ・マクロVBA終了時 ・Applicationのプロパティ解説 ・マクロが途中で終了した場合




同じテーマ「マクロVBA入門」の記事

第54回.Windowsオブジェクト

・Windowの指定方法 ・Windowオブジェクトデータ型 ・Windowオブジェクトのプロパティとメソッド ・Windowオブジェクトの解説 ・Windowオブジェクトの使用例 ・アクティブシート以外のWindowの設定
第55回.Worksheetオブジェクト
・WorkSheetオブジェクトの指定方法 ・Worksheetオブジェクトデータ型 ・WorkSheetのプロパティとメソッド ・Worksheetオブジェクトの使用方法 ・Activesheet、Sheetsコレクションについて
第56回.Rangeオブジェクト(RangeとCells)
・Rangeオブジェクトを参照するためのプロパティ ・Rangeオブジェクトを返すRangeプロパティ ・Rangeオブジェクトのデータ型 ・全てのセルを表すCells ・Rangeオブジェクトの使用例 ・RangeとCellsの使い分け方 ・VBEの自動メンバ表示(インテリセンス) ・RowsとColumns ・Rangeオブジェクトのプロパティとメソッド ・Rangeオブジェクトは難しい ・RangeとCellsの関連記事
第57回.Applicationのプロパティ(マクロ高速化と警告停止等)
第58回.コレクションとは(Collection)
・コレクションの中から単一オブジェクトを指定する場合 ・セルであるRangeオブジェクトのコレクションは? ・コレクションの要素数 ・Collectionオブジェクト
第59回.コレクション処理(For Each)
・For Each の構文 ・Exit For ・For Each の使用例 ・RangeオブジェクトのFor Each ・For Each サイト内の参考ページ
第60回.エラー処理(On Error)
・マクロVBAのエラー発生例 ・エラー処理のステートメント ・実行時エラー関連記事
第61回.「On Error GoTo」と「Exit Sub」
・On Error GoTo 行ラベル ・Exit Sub ・On Error の有効範囲とその動作について ・最後に
第62回.「On Error Resume Next」とErrオブジェクト
・On Error Resume Next ・Errオブジェクト ・On Error Resume Next の使用例 ・「On Error Resume Next」の最後に
第63回.ブックを開く(Open,Add)
・Workbooks.Openメソッド ・Openメソッドの使用例 ・Openメソッドの戻り値の使い方 ・Workbooks.Addメソッド ・Openメソッドの関連記事
第64回.ブックを閉じる・保存(Close,Save,SaveAs)
・ブックを閉じる ・ブックを上書き保存 ・ブックに名前を付けて保存 ・ブックのコピーを保存 ・ブックを閉じる・保存の実践例


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

ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.ひらがな⇔カタカナの変換|エクセル基本操作
5.繰り返し処理(For Next)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.Findメソッド(Find,FindNext,FindPrevious)|VBA入門




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


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。


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