2択のデフォルトボタンを変更

MsgBox関数を使用した2択でのデフォルトボタンを変更するコード

'「OK・キャンセル」ボタンで分岐(キャンセルをデフォルト)
If MsgBox(Title:="削除確認", Prompt:="データを削除します", Buttons:=vbOKCancel + vbDefaultButton2) = vbOK Then
'OKをクリックしたときの処理
Else
'×ボタンかキャンセルをクリックしたときの処理
End If
'キャンセルをデフォルト、注意アイコンを表示する
If MsgBox(Title:="削除確認", Prompt:="データを削除します", Buttons:=vbOKCancel + vbDefaultButton2 + vbExclamation) = vbOK Then
'OKをクリックしたときの処理
Else
'×ボタンかキャンセルをクリックしたときの処理
End If

「MsgBox」関数引数「Buttons」でボタンの複数表示をした場合に、最初にフォーカスが取得されているボタンを変更できます
(MsgBox関数の基本的な解説はこちら)

2択の処理分岐を行う際に、Enterキーをうっかり押してしまって処理を実行しないつもりが実行してしまった
という、ミスを防ぐために削除や時間のかかる処理の確認時はキャンセルボタンをデフォルトに設定します

第2ボタンをデフォルトにする
キャンセルボタンをデフォルトにする

ボタンの初期位置の設定には引数「Buttons」にボタンの指定の後に追記します
その際「+」記号を使用します

これで第2ボタンであるキャンセルボタンが最初にフォーカスを取得した状態になりますので、Enterキーを押しても処理実行はキャンセルされますので、誤って実行してしまうことを防ぐことができます

第2ボタンをデフォルトにして注意アイコンも表示する
デフォルトを変更してアイコンも表示

さらにアイコンに関しても追記で指定可能です
この場合も「+」記号を使用します
2つ目はさらに注意アイコンを指定しているので、音もなってより注意を促せる内容になります
音がわずらわしい場合は、1つ目で十分だと思います

2択のメッセージを表示

MsgBox関数を使用して2択の条件分岐を行うコード。3種類あります

'「OK・キャンセル」ボタンで分岐
If MsgBox(Title:="実行確認", Prompt:="処理を実行します", Buttons:=vbOKCancel) = vbOK Then
'OKをクリックしたときの処理
Else
'×ボタンかキャンセルをクリックしたときの処理
End If
'「はい・いいえ」ボタンで分岐
If MsgBox(Title:="実行確認", Prompt:="処理を実行します", Buttons:=vbYesNo) = vbYes Then
'はいをクリックしたときの処理
Else
'いいえをクリックしたときの処理
End If
'「再試行・キャンセル」ボタンで分岐
If MsgBox(Title:="エラー発生", Prompt:="対象のフォルダが見つかりません", Buttons:=vbRetryCancel) = vbRetry Then
'再試行をクリックしたときの処理
Else
'×ボタンかキャンセルをクリックしたときの処理
End If

ユーザーに処理の選択をさせる場合に使用するのがメッセージのボタン分岐です
「MsgBox」関数引数「Buttons」の設定を行うことで表示されるボタンが指定できます

引数「Title」と「Prompt」はこちらの記事から

MsgBoxは関数なので戻り値を取得できます

選択肢の無いメッセージでは、引数を()でくくりませんでした
これは戻り値を取得するかどうかで変わるものです
()を使用すると戻り値を取得できるようになります

戻り値は、ユーザーのクリックしたボタンが何かを返す数値です
分岐なので、その戻り値をIfを使って条件分岐を行います
(Ifの分岐処理についてはこちら)

2択の中では3種類あります

OKキャンセルの2択のメッセージ
1つ目のコード実行時

1つ目は、OKボタンとキャンセルボタンの2つが表示されます
最もスタンダードなものとなりますので、ユーザーもクリックを迷いづらいです
×ボタンをクリックした場合は、キャンセルボタンをクリックしたものとみなされます
×ボタンも入れれば3択ですが実際はちゃんと2択になります

はいいいえの2択のメッセージ
2つ目のコード実行時

2つ目の、はいといいえに関しては、キャンセルボタンが無いためキャンセルの戻り値を返せません
そのため×ボタンが使用できない状態になっています(グレー表示となり無効状態)
どうしても×を押されるのが嫌な場合は、このボタン指定を行ってください

再試行キャンセルの2択のメッセージ
3つ目のコード実行時

3つ目は、1つ目と同じですが、ボタンの文字が再試行になっています
再試行なので、1度処理を実行した後に完了できない場合に使用するボタンですね
このメッセージで処理が停止している間にフォルダを作成するなどして、処理を再試行することが可能になります

条件分岐のための、Ifの条件式の右辺に戻り値の定数を指定します
定数は指定したボタン名を入れればいいだけですね
なので、1つ目のコードでOKではなくキャンセルを条件としたい場合は「MsgBox( ~~ ) = vbCancel」という定数を指定すれば可能です

処理時間の長い処理などの実行前には必ずこのコードで実行確認を行いましょう
間違って処理開始ボタンを押してしまう可能性も考慮してあげましょう

アイコン付きのメッセージを表示

MsgBox関数で本文範囲にアイコン表示を行う方法

警告アイコンのメッセージ
警告表示
'警告メッセージを表示する
MsgBox Prompt:="警告です", Buttons:=vbCritical
注意アイコンのメッセージ
注意表示
'注意メッセージを表示する
MsgBox Prompt:="注意です", Buttons:=vbExclamation
確認アイコンのメッセージ
確認表示
'確認メッセージを表示する
MsgBox Prompt:="確認です", Buttons:=vbQuestion
情報アイコンのメッセージ
情報表示
'情報メッセージを表示する
MsgBox Prompt:="情報です", Buttons:=vbInformation

「MsgBox」関数でメッセージボックスを表示する際に文字列のみの情報だと、ユーザーがかるく流してしまうことがあります
(MsgBoxの基本利用はこちら)

処理の重要な点での分岐や処理前後の作業などでちゃんと読んでほしい
そんな時に使用するのが、アイコン表示です

引数「Buttons」の指定を行うことで任意のアイコンを表示できます

本文の左側に各アイコンが表示されます
アイコンの画像に関しては、例コードの左側にある画像を確認してください

また、警告と注意に関しては警報音もなりますのでよりユーザーに注意を促すことができますので耳障りで無い程度に使用してください

確認と情報のメッセージはあると丁寧にみえますが、重要度はあまり無いと思います

メッセージを表示する

本文とタイトルのあるメッセージを表示するコード。本文だけの簡易法もあります

'メッセージを表示する
MsgBox Title:="タイトル", Prompt:="本文内容"
'本文だけのメッセージを表示する
MsgBox "本文内容"
タイトルと本文のみのMsgBox
1つ目のコード実行時

メッセージを表示するには「MsgBox」関数を使用します

引数「Title」はメッセージボックスのタイトル部分に表示される文字列です
×ボタンの隣の範囲に表示されます
省略可能で、省略した場合は「Microsoft Excel」と表示されます
空白の指定は可能です

引数「Prompt」が、メッセージボックスの本文内容です
省略不可の引数となっていますが、空白は指定可能です
その場合は「Prompt:=””」と指定します

2つ目の例コードでは引数の指定を省略した書式になります
こちらでは引数を既定の順番に入力する必要がありますので、1番目の引数が本文内容になるので本文だけの最も簡易的なメッセージを表示する場合はこちらを使用してください

またこのメッセージが表示されている間はプログラムの実行は一時停止します

OKボタンか×ボタンによりメッセージが閉じられた時点でプログラムが再開しますので、処理時間の計測や他のアプリケーションを使用している場合は他の操作が行われないように注意してください