「実行しますか?」確認して実行させたい。(MsgBox)【Excelマクロ講座】

マクロで動かした後は元に戻せません。
保存しないぐらいしか対応方法がないので、実行前の確認は結構重要です。

Microsoft

今回はそんな実行確認用ダイアログの出し方。
↓のVBA文はそのままコピーして使えますし、作ったマクロのSubのひとつ下の行に差し込むのも良いでしょう、その場合はSubとEnd Subはコピーせず中身だけコピーするようにしましょう。

ちなみに操作記録をしてマクロを作成した時はコメント行として3行か4行あると思うのでその下に中身を貼り付けて動作を確認してみましょう。

「はい」「いいえ」の後もメッセージを表示。

Sub execonfirmYN()

Dim ALT As VbMsgBoxResult
ALT = MsgBox("実行しますか?", vbYesNo + vbExclamation, "Exe confirm")
If ALT = vbYes Then
MsgBox "実行しました。"
End If
If ALT = vbNo Then
MsgBox "中止しました。"

End Sub

「はい」の後にだけメッセージを表示。

Sub execonfirmY()

Dim ALT As VbMsgBoxResult
ALT = MsgBox("実行しますか?", vbYesNo + vbExclamation, "Exe confirm")
If ALT = vbYes Then
MsgBox "実行しました。"
End If

End Sub

実行確認のみ。

Sub execonfirm()

Dim ALT As VbMsgBoxResult
ALT = MsgBox("実行しますか?", vbYesNo + vbExclamation, "Exe confirm")

End Sub

・・

・・・

Dimの後のALTはその後の動きを管理する為の変数です。

メッセージボックス関数の中のタイトル”Exe confirm”の部分に実行する内容を入れておくとより親切ですね、ついでに使えそうなボタン引数も残しておきます。

vbOKOnly ‘OKボタンのみを表示。
vbOKCancel ‘OKとキャンセルボタンを表示。
vbYesNoCancel ‘はい、いいえ、キャンセルを表示。
vbYesNo ‘はい、いいえを表示。
vbQuestion ‘ハテナアイコンを表示。
vbExclamation ’ビックリマークを表示。
vbDefaultButton1 ‘数字で既定ボタンの設定。

他にもありますので興味がある方は調べてみてください。
引数を複数追加する場合は

, vbYesNo + vbQuestion ,

のように引数の間に+を付けましょう。

メッセージボックス関数

MsgBox (メインメッセージ,ボタン(省略可),タイトルバー(省略可),ヘルプテキスト(省略可),ヘルプテキストの補助(省略可))

という形になっており、

MsgBox(“メッセージ”)

というように使う事が出来ます。
その他は省略可能ですが、ヘルプテキストを入れる場合はセットでヘルプテキストの補助(context)が省略できなくなるので注意。

画面遷移を止めている場合でも問題なし

画面移動の多いマクロを組む場合によく使う

Application.ScreenUpdating = False と True

で画面表示を止める場合でも気にせず使って大丈夫です、スクリーンアップデーティングの中でも外でもダイアログは表示してくれます。

マクロも上手に使って快適なExcelライフを!

ではでは。

コメント