I have a Yes/No MsgBox
in my VBA script that returns a question for the user to answer. Whenever the "Yes" or "No" buttons are pressed, besides the script running its respective code, another MsgBox
with the numbers "6" or "7" pops up. How do I disable this second MsgBox
?
Here's my code:
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
just use
would be enough.
In addition the if function can be
Don't call MsgBox twice
The
MsgBox
function returns avbMsgBoxResult
value, which is an enum (and should be aLong
integer, not anInteger
).You're calling it twice:
Once to assign
question
, and once to displayquestion
- which at that point is going to contain eithervbYes
(6) orvbNo
(7).I would declare
question As vbMsgBoxResult
to avoid ambiguities and get autocomplete/IntelliSense when you later use it. Actually,result
oranswer
would be a better identifier - "question" sounds like the question itself, not the user's response.Remove
MsgBox question
. This is unnecessarily creating a second message box populated with the value of question (6 or 7 depending on whether you chose yes or no, as eg vbYes has the return value 6).