MsgBox basics

P

Phil C

Hi Guys

Please help. I am obviously failing to understand something very basic about
MsgBox syntax.
I have only previously used this function to give simple messages to the
user, and provide a single (default) OK button: E.g.

MsgBox "Your time has expired"

I want to add more buttons in due course (Yes, No, etc) but, for now, was
just trying to customise the title (caption) of the the message box:

MsgBox ("Your time has expired",vbOKOnly,"Time expiry notification")

produces a compile error ("expected: =") and I can't make sense of the Help
associated.
I am not including any Help/Context, so have left those options blank

I have tried assigning the message and Title as strings

Dim Msg As String
Dim Title As String
Msg = "Your time has expired"
Title = "Time expiry notification"
MsgBox (Msg, vbOKOnly, Title)

but to no avail..

And
MsgBox (Msg, vbOKOnly, Title, , ,) just produces another type of 'expected'
compile error

Thanks, Phil

PS. Once I have sorted the syntax, I should be able to use 0 instead of
vbOKOnly, 1 for vbOKCancel, etc. Right?
 
W

William

Hi Phil

Try running this macro to give you a few ideas.

Sub messageboxetc()
Dim X As String
MsgBox "vbInformation", vbInformation
MsgBox "vbCritical", vbCritical
MsgBox "vbAbortRetryIgnore", vbAbortRetryIgnore
MsgBox "vbExclamation", vbExclamation
MsgBox "vbQuestion", vbQuestion
MsgBox "vbYesNoCancel", vbYesNoCancel

X = MsgBox("Do you want to save the changes to " & ThisWorkbook.Name & "?",
vbYesNoCancel, "Microsoft Excel", "", vbExclamation)
If X = vbYes Then
MsgBox "Yes"
ElseIf X = vbNo Then
MsgBox "No"
ElseIf X = vbCancel Then
MsgBox "Cancel"
End If
End Sub

--

Regards

William

XL2003

(e-mail address removed)
 
P

Paul B

Phil take out the (), MsgBox "Your time has expired", vbOKOnly, "Time
expiry notification"

or just MsgBox "Your time has expired", , "Time expiry notification"

and for yes no cancel use something like this

Sub Message_box_test()



Msg = "Put message here"

Title = "Put title here"

Response = MsgBox(Msg, vbYesNoCancel + vbQuestion, Title)



If Response = vbNo Then

'your code if no is clicked here

MsgBox "you clicked no"

Exit Sub ' Quit the macro

End If



If Response = vbCancel Then

'your code if Cancel is clicked here

MsgBox "You clicked cancelled"

Exit Sub ' Quit the macro

End If



'your code if Yes is clicked here

MsgBox "you clicked yes"

End Sub
--
Paul B
Always backup your data before trying something new
Please post any response to the newsgroups so others can benefit from it
Feedback on answers is always appreciated!
Using Excel 2002 & 2003
 
P

Phil C

Thanks guys

I thought it would be someting simple, but not exactly obvious from MS help.
I will also try William's macro for my further education..!

Phil
 
G

Guest

First, you should use the named constants i.e. vbOKOnly etc., instead of
numeric values as this makes your code more readable.

The problem is:

If you are not interested in what key users clicked, the arguments of the
MsgBox function are NOT included in round brackets. If you have included the
arguments in round brackets, the result is not transparently sunk i.e you
need to assign the result to a variable e.g

resp = MsgBox("Message",vbOkOnly)

or use CALL, e.g

Call MsgBox("Message",vbOkOnly)

Strangely, if you have only a single argument within the round brackets, it
does not matter whether you are using round brackets or not.
 
C

Chip Pearson

Strangely, if you have only a single argument within the round
brackets, it
does not matter whether you are using round brackets or not.

It does matter. If you enclose the argument to a Sub in
parentheses, VBA evaluates it to its actual value and passes it
ByVal instead of ByRef.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com
 
G

Guest

By "it does not matter" I implied that there is no compile error when MsgBox
has a single argument wrapped in round brackets and its return value is
neither assigned not sunk by CALL.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top