Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

VBA Msgbox – A Complete

Guide to the VBA Message Box


BY PAUL KELLY·0 COMMENTS

The VBA MsgBox function is used to display messages to the user in the form of a message box.

We can configure the message box to provide the user with a number of different buttons such as
Yes, No, Ok, Retry, Abort, Ignore and Cancel. The MsgBox function will then return the button
that was clicked.

Contents [hide]
 1 Basic VBA MsgBox Examples
 2 VBA MsgBox Parameters
o 2.1 VBA MsgBox Return Values
o 2.2 VBA MsgBox Yes No
 3 VBA MsgBox Button Parameters
 4 VBA MsgBox Examples
 5 Related Posts

Basic VBA MsgBox Examples


In most cases, you will use MsgBox to simply display a message or to ask the user to click
Yes/No or Ok/Cancel. The following code shows how to display a simple message box:

Sub BasicMessageBox()

' Basic message

MsgBox "There is no data on this worksheet "

' Basic message with "Error" as the title

MsgBox "There is no data on this worksheet ", , "Error"

End Sub

VBA MsgBox Parameters


The parameters of the message box are as follows:
MsgBox prompt, [ buttons, ] [ title, ] [ helpfile, context ]
prompt – This is the message text that will be displayed.
buttons[optional] – This parameter does many things including setting the buttons, icons, select
button, modal type etc. If this parameter is not used a message box with the Ok button and no
icon is displayed. See the next section for more about this parameter.
title[optional] – this is the title that will appear at the top of the message box. The default is
“Microsoft Excel”.
helpfile, context[optional] – These parameters are used to reference a help file and location of
specific help text. It is very unlikely you use this unless you are creating an application for a
third party and help files are a requirement.

VBA MsgBox Return Values


The following are all the return values for the MsgBox function:
vbOk
vbCancel
vbAbort
vbRetry
vbIgnore
vbYes
vbNo
Each of these values represents a button that was clicked.

VBA MsgBox Yes No


We can use the message box to get a simple response from the user. For example, we can ask the
user a question and they can respond by clicking on the Yes or No button. The return value from
the MsgBox function tells us which button was clicked.
If we want to get a Yes/No response from the user we can do it with the following code:

Sub MessagesYesNoWithResponse()

' Display a messagebox based on the response

If MsgBox("Do you wish to continue? ", vbYesNo) = vbYes Then

MsgBox "The user clicked Yes"

Else

MsgBox "The user clicked No"

End If

End Sub

Note: When we return a value from the message box we must use parenthesis around the
parameters or we will get the “Expected end of statement” error.

We can also use a variable to store the response from the MsgBox. We would normally do this if
we want to use the response more than once. For example, if there were three buttons:
Sub Msgbox_AbortRetryIgnore()

Dim resp As VbMsgBoxResult

' Store MsgBox response in a variable

resp = MsgBox("Do you wish to continue? ", vbAbortRetryIgnore)

' Display Ok/Cancel buttons and get response

If resp = vbAbort Then

MsgBox "The user clicked Abort"

ElseIf resp = vbRetry Then

MsgBox "The user clicked Retry"

ElseIf resp = vbIgnore Then

MsgBox "The user clicked Ignore"

End If

End Sub

VBA MsgBox Button Parameters


The button parameter of MsgBox allows us to configure the message box in many ways. The
table below shows the different options:

Constant Group Type Description

vbOKOnly 1 Buttons Ok button.

vbOKCancel 1 Buttons Ok and cancel buttons.

vbAbortRetryIgnore 1 Buttons Abort, Retry and Ignore buttons.


Constant Group Type Description

vbYesNoCancel 1 Buttons Yes, No and Cancel buttons.

vbYesNo 1 Buttons Yes and No buttons.

vbRetryCancel 1 Buttons Retry and Cancel buttons.

vbCritical 2 Icon Critical Message icon.

vbQuestion 2 Icon Warning Query icon.

vbExclamation 2 Icon Warning Message icon.

vbInformation 2 Icon Information Message icon.

vbDefaultButton1 3 Default Set button 1 to be selected.


button

vbDefaultButton2 3 Default Set button 2 to be selected.


button

vbDefaultButton3 3 Default Set button 3 to be selected.


button

vbDefaultButton4 3 Default Set button 4 to be selected. Note that there will only be four buttons if the help button is
button included with vbAbortRetryIgnore or vbYesNoCancel.

vbApplicationModal 4 Modal Cannot access Excel while the button is displayed. Msgbox is only displayed when Excel
is the active application.

vbSystemModal 4 Modal Same as vbApplicationModal but the message box is displayed in front of all
applications.

vbMsgBoxHelpButton 5 Other Adds a help button

vbMsgBoxSetForeground 5 Other Sets the message box windows to be the foreground window
Constant Group Type Description

vbMsgBoxRight 5 Other Right aligns the text.

vbMsgBoxRtlReading 5 Other Specifies text should appear as right-to-left reading on Hebrew and Arabic systems.

These constants work as follows:

1. The constants in group 1 are used to select the buttons.


2. The constants in group 2 are used to select icons.
3. The constants in group 3 are used to select which button is highlighted when the message
box appears.
4. The constants in group 4 are used to set the modal type of the message box.
5. The constants in group 5 are used for various settings.

When we use MsgBox, we can combine items from each group by using the plus sign. For
example:

MsgBox "Example 1" ,vbOkCancel + vbCritical + vbDefaultButton1 +


vbApplicationModal

This displays the message box with the Ok and Cancel button, the critical message icon, with the
Ok button highlighted and the message box will display only when Excel is the active
application.

MsgBox "Example 2", vbYesNo + vbQuestion + vbDefaultButton2 +


vbSystemModal

This displays the message box with the Yes and No button, the warning query icon, with the No
button highlighted and the message box will display in front of all applications.

Important: Each time we use the MsgBox function we can only select one of each:

1. button type
2. icon type
3. default button
4. modal type
In other words, we can only select one item from each of the first 4 groups.
The next section shows some more examples of using the message box.

VBA MsgBox Examples


The following examples show to display the various icons with the Yes and No buttons:

' Yes/No buttons with Critical icon and No button selected

resp = MsgBox("Do you wish to continue", vbYesNo + vbCritical)

' Yes/No buttons with Warning Query icon and Yes button selected

resp = MsgBox("Do you wish to continue", vbYesNo + vbQuestion)

' Yes/No buttons with Warning Message icon and Yes button selected

resp = MsgBox("Do you wish to continue", vbYesNo + vbExclamation)

' Yes/No button with Information Message icon and Cancel button selected

resp = MsgBox("Do you wish to continue", vbYesNo + vbInformation)

The following examples show the Abort/Retry/Ignore button plus the help button with different
buttons selected:

' Abort/Retry/Ignore button with the Help button displayed and Abort
selected

resp = MsgBox("Error", vbAbortRetryIgnore + vbDefaultButton1 +


vbMsgBoxHelpButton)

' Abort/Retry/Ignore button with the help button displayed and Retry
selected
resp = MsgBox("Error", vbAbortRetryIgnore + vbDefaultButton2 +
vbMsgBoxHelpButton)

' Abort/Retry/Ignore button with the Help button displayed and Ignore
selected

resp = MsgBox("Error", vbAbortRetryIgnore + vbDefaultButton3 +


vbMsgBoxHelpButton)

' Abort/Retry/Ignore button with the Help button displayed and Help
selected

resp = MsgBox("Error", vbAbortRetryIgnore + vbDefaultButton4 +


vbMsgBoxHelpButton)

The following examples show some button selections and the title parameter being set:

' Retry/Cancel button with query warning as the icon and "Error" as the
title

resp = MsgBox("An error occurred. Try again?", vbRetryCancel + vbQuestion,


"Error")

' Ok button with critical icon and "System error" as the title

MsgBox "An error occurred", vbCritical, "System Error"

You might also like