アクセス担当のまみです。
メッセージボックスってとっても重要な役割を果たしてくれます。
注意してねってアイコンが表示されると、データ入力で散漫になりかけていた注意力も少し戻ってきたりして、慎重になれますね。
メッセージボックスって、メッセージを表示させるだけじゃなくて、どれを選ぶかでその後の処理を変えることができるんです。条件分岐って言うのですが、今回はメッセージボックスを使った条件分岐についてお伝えしますね。
Contents
メッセージボックスにタイトルとアイコンの表示
今回、説明のために「メッセージボックス」ファイルを使用します。
メッセージボックスにタイトルとアイコンの表示する方法を下記の記事でお伝えしているので、ぜひ作成してみてくださいね!
前回のメッセージボックスのコードの「vbOKOnly」を削除して、動作確認してみてくださいね。
MsgBox "メッセージを表示させよう!", , "メッセージの表示"
プログラム作成の基本となる「フォームの作成」、「データの登録」、「データの検索」、「データの修正」、「レコードの削除」を「宛名印刷」ファイルを作成しながら、お伝えしています。
シリーズを読破すると、ついでにはがきの宛名印刷ができるようになっちゃいます。
お時間がありましたら是非、下記の記事から作成してみてください。
メッセージボックスで条件分岐
メッセージボックスの選択肢が2つのパターン
「OK」「キャンセル」
では、メッセージボックスに「OK」「キャンセル」が表示されるようにしてみましょう。
私は、ボタンを1つで上書きしちゃってますが、ボタンを追加されたい場合は、追加してくださいね。
では、下記のコードを追加しましょう。
If MsgBox("どちらか選択してね!", vbOKCancel + vbQuestion, "どっち?") = vbOK Then MsgBox "OKですね", , "回答" Else MsgBox "キャンセルですね", , "回答" End If
「OK」をクリックすると「OK」が表示、「キャンセル」をクリックすると「キャンセル」が表示されるようなメッセージボックスを作ってみました。
実際には、2つ目のメッセージボックスが表示される部分にどんな動きをしてほしいかのコードを記載するんです。
実例は下記の記事をどうぞ!
「はい」「いいえ」
「はい」「いいえ」は上の記事でもでてきたし、OKかなと思いますので、簡単に。
If MsgBox("どちらか選択してね!", vbYesNo + vbQuestion, "どっち?") = vbYes Then MsgBox "はいですね", , "回答" Else MsgBox "いいえですね", , "回答" End If
選択肢が2つのパターンはあともう1つあります。
「再試行」「キャンセル」
表示されるメッセージが違うだけなんですが、「再試行」「キャンセル」ってパターン。
If MsgBox("どちらか選択してね!", vbRetryCancel + vbQuestion, "どっち?") = vbRetry Then MsgBox "再試行ですね", , "回答" Else MsgBox "キャンセルですね", , "回答" End If
選択肢が2つのパターンは以上です。
次は選択肢が3つのパターンです。
メッセージボックスの選択肢が3つのパターン
「はい」「いいえ」「キャンセル」
3つのパターンになると、少し複雑になりますね。
Dim nRet As Long nRet = MsgBox("どれにするか選択してね!", vbYesNoCancel + vbQuestion, "どれ?") If nRet = vbYes Then MsgBox "はいですね", , "回答" ElseIf nRet = vbNo Then MsgBox "いいえですね", , "回答" Else MsgBox "キャンセルですね", , "回答" End If
メッセージボックスは変数を使用するとコードがスッキリします。
nRetって変数にいれちゃいましょう。
「vbYes」のときは「はい」、「vbNo」のときは「いいえ」、それ以外のときは「キャンセル」を表示してねってコードができました。
選択肢が3つのパターンにはもう一つあります。
「中止」「再試行」「無視」
これも、表示が違うだけなので簡単に。
Dim nRet As Long nRet = MsgBox("どれにするか選択してね!", vbAbortRetryIgnore + vbQuestion, "どれ?") If nRet = vbAbort Then MsgBox "中止ですね", , "回答" ElseIf nRet = vbRetry Then MsgBox "再試行ですね", , "回答" Else MsgBox "無視ですね", , "回答" End If
デフォルトボタン
さっきのメッセージボックスで説明しましょう。
この場合は「中止」が強調されています。最初から「中止」にフォーカスがあたっているんですね。
このフォーカスを当てる位置を変えることができるんです。
「vbDefaultButton1」は省略可能です。なので「中止」にフォーカスが当たっています。
「vbDefaultButton2」「vbDefaultButton3」を使用することで、フォーカスの位置を変更することができます。
ためしに、「vbDefaultButton3」を使ってみましょう。
Dim nRet As Long nRet = MsgBox("どれにするか選択してね!", vbAbortRetryIgnore + vbQuestion + vbDefaultButton3, "どれ?") If nRet = vbAbort Then MsgBox "中止ですね", , "回答" ElseIf nRet = vbRetry Then MsgBox "再試行ですね", , "回答" Else MsgBox "無視ですね", , "回答" End If
まとめ
メッセージボックスを使って、色々できそうですね。
メッセージボックスを効果的に使えるようになると、プログラミングの幅が広がりますね。