MsgBox Yes/No Excel VBA

just use

question = "Unfortunately, the Database has no sources regarding " & Category & " in " & country & ". Would you like to broaden your search and see all sources regarding " & country & "?."

would be enough.

In addition the if function can be

If Msgbox(Question) = vbYes then 
    ...
End If

Don't call MsgBox twice


The MsgBox function returns a vbMsgBoxResult value, which is an enum (and should be a Long integer, not an Integer).

You're calling it twice:

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

Once to assign question, and once to display question - which at that point is going to contain either vbYes (6) or vbNo (7).

enter image description here

I would declare question As vbMsgBoxResult to avoid ambiguities and get autocomplete/IntelliSense when you later use it. Actually, result or answer 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).

Tags:

Excel

Vba

Msgbox