【ExcelVBA入門】DisplayAlertsプロパティでメッセージを制御する方法とは

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAでメッセージを非表示にする方法を知っていますか?DisplayAleartsプロパティの値を変更すれば、簡単にメッセージの表示/非表示を変更することができます。

そこで今回は、

  • DisplayAleartsプロパティの使い方

といった基礎的なことから、

  • DisplayAlertsプロパティを使うタイミングとは
  • DisplayAlertsプロパティを使った具体的なサンプルコード
  • マクロの記録で作ったコードを使うときの注意点

といった応用的な方法まで、徹底的に解説します!

目次

DisplayAlertsプロパティとは

はじめに、DisplayAlertsプロパティについて簡単に解説します。DisplayAlertsプロパティとは、Applicationオブジェクトのプロパティの1つで、値を変更することでメッセージの表示/非表示を制御することができます。

使い方は以下のとおりです。使い方:

Application.DisplayAlearts = 値

値をTrueにするとメッセージ表示、Falseにすると非表示にすることができます。1行で変更することができるので、とても簡単ですよね。

DisplayAlertsプロパティを使うタイミングとは

ここまでの説明を聞いていると、

あえてメッセージを表示しないケースって、あるのかな?

と思う方も多いと思います。なので、どういったケースで使うのか簡単に解説しますね。メッセージの制御は、ファイルの保存、データクリア、シートやブックの削除など、確認メッセージがでてくるときによく使います。

例えば、「新しくファイルを作成して名前を付けたあと、名前をつけて保存する処理」があったとします。ファイルを保存するときに同じ名前のファイルがあった場合、以下のように確認メッセージがでてしまいます。

サンプルコード:

Sub Test1()
  'ブック作成
  Dim wb1 As Workbook
  Set wb1 = Workbooks.Add
 
  'ブック保存
  wb1.SaveAs Filename:=ThisWorkbook.Path & "" & "SaveAsで保存したファイル.xlsx"
  
  'ブックを閉じる
  wb1.Close
End Sub

実行中に出てくるメッセージ:

メッセージが出てしまうと処理が途中で止まってしまうため、最後のブックを閉じる処理が実行されずに固まってしまいます。保存時のメッセージを表示せずに保存したい場合は、保存処理の前後に「DisplayAlearts」の値を変更して、以下のようにします。

サンプルコード:

Sub Test()
  'ブック作成
  Dim wb1 As Workbook
  Set wb1 = Workbooks.Add
 
  'ブック保存
  Application.DisplayAlerts = False 'メッセージを非表示
  wb1.SaveAs Filename:=ThisWorkbook.Path & "" & "SaveAsで保存したファイル.xlsx"
  Application.DisplayAlerts = True  'メッセージを再表示
  
  'ブックを閉じる
  wb1.Close
End Sub

このように、簡単にメッセージの表示/非表示を制御することができます。ちなみに、サンプルで紹介したワークブックの保存方法については以下記事で詳しく解説しているので、気になる方は見てみてくださいね!

補足:マクロの記録で作ったコードを使うときの注意点

Excelの操作を保存して自動でマクロを作ってくれる機能に、マクロの記録があります。操作をマクロにしてくれるので、自分が作りたい動きをVBAに変換したいときにとても便利なのですが、この機能には落とし穴があります。

それは、「記録時の操作のみをマクロ化するため、同じ操作をもういちど動かすことを想定したコードになっていない点」です。先ほどの「名前を付けてファイルを保存する処理」の場合、操作を記録している1回目はファイルがないためメッセージが出ません。

しかし、保存したマクロを実行した2回目は既にファイルが存在するため、先ほどのメッセージが出てしまいます。そのため、マクロの記録で保存したコードであっても、2回目に処理が同じように動くかどうか確認するのがおすすめです!

マクロの記録の使い方については、以下で詳しく解説しているので気になる方は見てみてくださいね!

まとめ

今回は、メッセージの表示/非表示を制御するDisplayAlertsプロパティの使い方について解説しました。メッセージを表示せずに処理を動かしたい場合によく使うので、覚えておくのがおすすめです!

使い方も簡単なので、ぜひ使ってみてくださいね!

この記事を書いた人

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!
侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

目次