Yes/No MsgBox
inユーザーに回答する質問を返すVBAスクリプト。 「はい」または「いいえ」ボタンを押すたびに、それぞれのコードを実行するスクリプトに加えて、数字「6」または「7」の別のMsgBox
がポップアップ表示されます。この2番目のMsgBox
を無効にするにはどうすればよいですか?
私のコードは次のとおりです。
Dim question As Integer
question = MsgBox("Unfortunately, the Database has no sources regarding " & Category & " in " & country & ". Would you like to broaden your search and see all sources regarding " & country & "?", vbYesNo + vbQuestion, "Empty Sheet")
MsgBox question
If question = vbYes Then
Sheets("Results").Range("D6").ClearContents
Sheets("Results").Range("D7").ClearContents
Category = Sheets("Results").Range("D6").Value
Else
Sheets("Results").Range("D5").ClearContents
Sheets("Results").Range("D6").ClearContents
Sheets("Results").Range("D7").ClearContents
Exit Sub
End If
MsgBox
関数は、vbMsgBoxResult
値を返します。これは列挙型です(Long
ではなく、Integer
整数でなければなりません)。
あなたはそれを2回呼び出しています:
Dim question As Integer question = MsgBox("Unfortunately, the Database has no sources regarding " & Category & " in " & country & ". Would you like to broaden your search and see all sources regarding " & country & "?", vbYesNo + vbQuestion, "Empty Sheet") MsgBox question
1回はquestion
を割り当て、もう1回はquestion
を表示します。この時点で、vbYes
(6)またはvbNo
(7)のいずれかが含まれます。
question As vbMsgBoxResult
を宣言して、あいまいさを避け、後で使用するときにオートコンプリート/ IntelliSenseを取得します。実際には、result
またはanswer
の方がより適切な識別子です。「質問」は質問自体のように聞こえます。ユーザーの応答。
ただ使う
question = "Unfortunately, the Database has no sources regarding " & Category & " in " & country & ". Would you like to broaden your search and see all sources regarding " & country & "?."
十分でしょう.
さらに、if関数は
If Msgbox(Question) = vbYes then
...
End If
MsgBoxを2回呼び出さないでください
MsgBox question
を削除します。これにより、質問の値が入力された2番目のメッセージボックスが不必要に作成されます(たとえば、vbYesの戻り値は6であるため、yesまたはnoのどちらを選択したかに応じて6または7)。