アクセスVBAメッセージボックスで条件分岐させよう

 

アクセス担当のまみです。

 

メッセージボックスってとっても重要な役割を果たしてくれます。

注意してねってアイコンが表示されると、データ入力で散漫になりかけていた注意力も少し戻ってきたりして、慎重になれますね。

メッセージボックスって、メッセージを表示させるだけじゃなくて、どれを選ぶかでその後の処理を変えることができるんです。条件分岐って言うのですが、今回はメッセージボックスを使った条件分岐についてお伝えしますね。

 

Contents

メッセージボックスにタイトルとアイコンの表示

 

今回、説明のために「メッセージボックス」ファイルを使用します。

メッセージボックスにタイトルとアイコンの表示する方法を下記の記事でお伝えしているので、ぜひ作成してみてくださいね!

 

【Access】VBAいろいろなメッセージボックスを作成してみよう

2018年10月14日

 

(はてな君)
そう言えば、「宛名印刷」ファイルの時って、「vbOKOnly」ってコードに書いてなかった気がする・・・
 
(あいちゃん)
vbOKOnlyって省略可能なんです。
 

前回のメッセージボックスのコードの「vbOKOnly」を削除して、動作確認してみてくださいね。

 
 
結果は同じになりますよ。
 
 
一つだけ、タイトルのみのコードをお伝えしておきますね。
 
 
    MsgBox "メッセージを表示させよう!", , "メッセージの表示"
 
 
 

コードをコピーされたい場合は下記の記事を参考にしてください。

 

関連記事
 
 
「宛名印刷」ファイルの話が出てきたので説明しておきますね。

プログラム作成の基本となる「フォームの作成」、「データの登録」、「データの検索」、「データの修正」、「レコードの削除」を「宛名印刷」ファイルを作成しながら、お伝えしています。

シリーズを読破すると、ついでにはがきの宛名印刷ができるようになっちゃいます。

お時間がありましたら是非、下記の記事から作成してみてください。

 
 
 

 

 

メッセージボックスで条件分岐

 

(はてな君)
条件分岐って「宛名印刷」ファイルでやった「はい」「いいえ」を使ったメッセージボックスのことだって前回教えてもらったけど、他にもあるの?
(あいちゃん)
選択肢が3つのパターンがあるんです。あと、「はい」「いいえ」じゃなくて「OK」「キャンセル」とか。

 

 

(はてな君)
へぇそうなんだぁ。楽しみ~

 

 

 

さっきも出てきたので、「OK」のみのメッセージボックスは大丈夫ですね!
 
 

メッセージボックスの選択肢が2つのパターン

 

 

「OK」「キャンセル」

 

では、メッセージボックスに「OK」「キャンセル」が表示されるようにしてみましょう。

 

私は、ボタンを1つで上書きしちゃってますが、ボタンを追加されたい場合は、追加してくださいね。

 

では、下記のコードを追加しましょう。

 

 

    If MsgBox("どちらか選択してね!", vbOKCancel + vbQuestion, "どっち?") = vbOK Then
        MsgBox "OKですね", , "回答"
    Else
        MsgBox "キャンセルですね", , "回答"
    End If

 

 

 

 

メッセージボタンを押すと出てくるメッセージ

 

 

 

「OK」をクリックすると「OK」が表示、「キャンセル」をクリックすると「キャンセル」が表示されるようなメッセージボックスを作ってみました。

実際には、2つ目のメッセージボックスが表示される部分にどんな動きをしてほしいかのコードを記載するんです。

実例は下記の記事をどうぞ!

 

アクセスVBAクエリを使ってかんたん重複チェック

2018年9月29日
 

「はい」「いいえ」

 

「はい」「いいえ」は上の記事でもでてきたし、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

 

 

(はてな君)
ホントだぁ!「無視」にフォーカスがあるよ!

 

まとめ

 

メッセージボックスを使って、色々できそうですね。

メッセージボックスを効果的に使えるようになると、プログラミングの幅が広がりますね。

 

スポンサーリンク