【VBA】マクロ実行中に表示される警告を非表示!無視した際の挙動も確認

今この記事を読んでいる人は、エクセルマクロを実行しているときに

「変更内容を保存しますか?」とか

「クリップボードに大きな情報があります。この情報を・・・」

とかゆうメッセージが出てきて困っている人だと思います。

 

この記事では、これらのメッセージが出てこないようにする方法をご紹介していきます。

※非常に簡単な方法ではありますが、大事な警告も無視して処理を続行してしまう可能性があります。実装するかどうかは自己責任でお願いします。

スポンサーリンク

警告を非表示にする方法

早速ですが、マクロ実行中に警告を表示しないようにする方法をご紹介します。

 

やることはひとつ。

以下のコードを警告発生の該当コード直前に記述するだけです。

Application.DisplayAlerts = False

 

非常に簡単ですね。

 

とはいえ、盲目的にこのコードを記述するのではなく、一度素の状態でマクロを実行し、出てくる警告が無視しても問題のないものであることを確認してからこいつを記述するようにしましょう。

(大事な警告まで見落としてしまいかねませんからね。)

 

また、無視したい&したくない警告が混在するような処理の場合は、適切な箇所で

Application.DisplayAlerts = True

を記述して警告が再表示されるように設定しておきましょう。

 

スポンサーリンク

Application.DisplayAlertsの使用例

使い方がわかったところで、実際の使用例を見ていきましょう。

 

今回は以下のサンプルコードに対して、

Application.DisplayAlerts=False

を付けない場合、付けた場合それぞれで処理を実行してみます。

 

■サンプルコード

Sub Test_Display_Alerts()
    Workbooks.Open ThisWorkbook.Path & "\data.xlsx"
    Windows("data.xlsx").Activate
    Range("A1:Z30") = "aaa"
    Range("A1:Z30").Copy
    Windows("data.xlsx").Close
    MsgBox "Finish"
End Sub

このコードでやっていることは、マクロファイルが保存してある場所と同じフォルダにあるdata.xlsxというファイルを開き、A1:Z30を編集し、同じ領域をコピーして、data.xlsxを閉じるというものです。

 

また、最後に終了確認のためFinishのメッセージを表示させています。

 

まずはApplication.DisplayAlerts = Falseを付けないままの状態で実行してみましょう。

 

すると以下のような警告が出現しました。

マクロ実行中に表示される警告(保存確認)

適当に編集した部分を保存するかどうかの確認警告ですね。

(とりあえず保存しないにしておきます。)

 

すると次は以下の警告がでてきました。

マクロ実行中に表示される警告(クリップボードの情報保存)

これは最後にコピーしたデータに対して、ファイルを閉じたあともコピー状態を保持するかどうか確認する警告です。

(要はマクロ処理終了後にCtrl + V で張り付けられる状態にするかどうかを聞いてくれているわけです。)

 

とりあえずいいえにしておきましょう。

 

すると終了確認の以下のメッセージが表示されました。

マクロの終了報告メッセージ

 

これで一連のマクロ処理が終了です。

 

次に先ほど紹介したように

Application.DisplayAlerts = False

を付けて同じ処理を実行してみましょう。

 

変更後のコードは以下の通りです。

Sub Test_Display_Alerts()
    Application.DisplayAlerts = False
    Workbooks.Open ThisWorkbook.Path & "\data.xlsx"
    Windows("data.xlsx").Activate
    Range("A1:Z30") = "aaa"
    Range("A1:Z30").Copy
    Windows("data.xlsx").Close
End Sub

では実行してみましょう。

 

はい、いきなりこいつが出現しました。

マクロの終了報告メッセージ

問題なく途中の警告を非表示にすることができましたね。

 

とはいえ、

「途中の警告で聞かれていたところはどのような処理になっているの?」

こんな疑問が出ていると思います。

 

つぎは途中の警告を無視した場合、どのような扱いをされているのかを確認してみましょう。

スポンサーリンク

警告非表示状態での処理結果の分析

先ほど警告表示が出た際に自分で選択した2つの項目がどのように処理されているのか確認してみましょう。

 

まずはマクロで編集した項目(セルデータをaaaに書き換えたところ)が保存されているかどうか見てみましょう。

 

ちなみに、マクロ実行前のdata.xlsxファイルには以下のデータが入っていました。

マクロ実行前のエクセルシートの状態確認

もし保存されていれば、これらのデータはすべてaaaという文字に変わっているはずです。

 

開いてみましょう。

マクロ実行後のエクセルシートの状態確認

 

変わってない!!!

Application.DisplayAlerts = Falseでは編集したファイルは保存されないで閉じられるということですね。

 

次にコピー状態が維持されているかどうかです。

(クリップボードがどうたらこうたら言ってきたところですね。)

 

こいつを確認するために、マクロ処理が終わったあとにマクロ実行をおこなったファイルのA1セルでCtrl + Vを実行してみました。

 

すると以下のようにA1:Z30領域にaaaの文字が入力されました。

クリップボードの情報保存状態の確認結果

 

Application.DisplayAlerts = Falseではクリップボードに大きな情報が・・・の警告は【はい】が選択されているということですね。

 

ここで紹介したもの以外にも、何か警告がでることがあるとおもいます。

その際はこのような動作検証してから警告無視をするか判断する癖をつけておきましょう。

 

スポンサーリンク

おわりに

というわけで今回は、マクロ実行中に出てくる警告を非表示にする方法、非表示にした際の挙動についてご紹介しました。

 

ぜひうまく活用して処理を高速化していきましょう。

 

とはいえ警告を無視することにはリスクが伴います。

実装する際はあくまでも自己責任でお願いします。

 

このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

過去記事一覧

 

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。

⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

それではまた!

コメント

タイトルとURLをコピーしました