教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA その他操作】警告メッセージを非表示にする(Application.DisplayAlerts)にはどうすればいいの?教えて!

構文

構文は以下の通りです。

Application.DisplayAlerts = True    '警告メッセージが表示される
Application.DisplayAlerts = False   '警告メッセージが表示されない

解説

DisplayAlertsは、ExcelVBAでメッセージボックスやダイアログボックスの表示を制御するために使用されます。通常、Excelが特定の操作(保存時の上書き確認など)に関連してメッセージボックスを表示すると、プログラムの実行が一時停止され、ユーザーの操作が必要になります。しかし、DisplayAlertsを使用すると、これらのメッセージボックスを表示せずに自動的に処理を行うことができます。Trueを指定すると、メッセージボックスが表示され、Falseを指定すると、メッセージボックスが表示されずに処理が行われます。

使い方

以下のようなパターンで使用されます。

Sub プロシージャ名()
    ' DisplayAlertsをFalseに設定
    Application.DisplayAlerts = False
    ' メッセージボックスが表示されない処理
    ・・・・・・・・・・・・・・・     
    ' DisplayAlertsをTrueに戻す
    Application.DisplayAlerts = True
End Sub

上記のコードでは、Application.DisplayAlerts = Falseとすることで、メッセージボックスの表示をオフにしています。その後、メッセージボックスが表示されない処理を実行し、最後にApplication.DisplayAlerts = Trueとすることで、元の表示状態に戻しています。

プログラミング例

例として、データを新しいシートにコピーするプログラムを考えてみましょう。

Sub CopyData()
    Dim sourceSheet As Worksheet
    Dim targetSheet As Worksheet
    ' エラーハンドリングを有効化
    On Error Resume Next
    ' プログラム実行前に警告を表示しない
    Application.DisplayAlerts = False
    ' シートの作成
    Set sourceSheet = ThisWorkbook.Worksheets("元のシート")
    Set targetSheet = ThisWorkbook.Worksheets.Add
    ' データのコピー
    sourceSheet.UsedRange.Copy Destination:=targetSheet.Range("A1")
    ' エラーハンドリングを無効化
    On Error GoTo 0
    ' プログラム実行後に警告を表示する
    Application.DisplayAlerts = True
    ' メッセージボックスの表示
    MsgBox "データのコピーが完了しました。"
End Sub

上記の例では、最初に`On Error Resume Next`を使用してエラーハンドリングを有効化しています。次に、`Application.DisplayAlerts = False`とすることで、メッセージボックスの表示をオフにしています。その後、データをコピーする処理を実行し、最後に`Application.DisplayAlerts = True`とすることで、元の表示状態に戻しています。最後に、`MsgBox`関数を使用してメッセージボックスを表示しています。

 まとめ

DisplayAlertsは、ExcelVBAでメッセージボックスやダイアログボックスの表示を制御するための便利な関数です。`Application.DisplayAlerts = False`を使用することで、メッセージボックスの表示をオフにし、自動的に処理を行うことができます。処理が終了した後には、`Application.DisplayAlerts = True`を使用して元の表示状態に戻します。