Resize Message Box

A

Andibevan

Hi All,

I am trying to display a large amount of information to the user within a
message box but can't work out how to specify the width of the box.

As the width of the box is too small, my text word wraps whereas I want each
piece of information to be contained on a seperate line.

Is it possible to set the size of a message box or do I need to use a
useform.

Would really appreciate it if someone could give me a pointer.

Thanks

Andy
 
G

Guest

Andy

I'm not sure if you can autosize a messagebox but you could try something
like:

Range("A1").Comment.Shape.Width = 150

Regards
Rowan
 
B

Bob Phillips

Use a Chr(10), for example

msgbox "hello" & Chr(10) & "goodbye" & chr(10) & "taht's it"

--

HTH

RP
(remove nothere from the email address if mailing direct)
 
T

Tom Ogilvy

I believe it can be resized using the windows API, but code I have seen to
customize a message box is voluminous - easier to use a userform I would
think.
 
A

Andibevan

Sorry Bob,

I think it would be clearer if I gave you the code:-

MsgBox "Copy Information from:- C:\Documents and Settings\abevan\My
Documents\SM Partition\Drive_H\WIP\WIP - Weekly Checkin\Start"

When I try this it appears on 2 lines but I want it to appear on one.

Any ideas?

Ta

Andi
 
A

Andibevan

Tom,

You may well be right - I seem to remember that you can generate a line of
code to generate a userform - am I correct or imagining things?

Ta

Andy
 
B

Bob Phillips

When I run that, it all appears on one line !

--

HTH

RP
(remove nothere from the email address if mailing direct)
 
T

Tom Ogilvy

Generally, you insert a userform and put a label on it. Make it as wide
as you need. then you show the form

userform1.show

in the initialize event you could do

Private sub Userform_Initialize()
label1.caption = _
"Copy Information from:- C:\Documents and Settings\abevan\My" & _
"Documents\SM Partition\Drive_H\WIP\WIP - Weekly Checkin\Start"
End sub

back to the message box, you could try:

Sub showmsg()
sStr = "Copy Information from:"
sStr1 = "C:\Documents and Settings\abevan\My" & _
"Documents\SM Partition\Drive_H\WIP\WIP - Weekly Checkin\Start"
MsgBox sStr & vbNewLine & sStr1

End Sub

That might work for you
 
A

Andibevan

Apologies again, I copied the wrong line - it also appears correctly on
mine

This one does appear on 2 lines on my screen.
MsgBox "Copy Information from:- C:\Documents and Settings\abevan\My
Documents\SM Parti\Drive_H\WIP\WIP - Weekly Checkin\Start\blahblahblahblah"

Maybe there is a way to turn of word wrapping in a message box?
 
B

Bob Phillips

Guess what - one line for me/

This is how I understand MsgBox to work.

--

HTH

RP
(remove nothere from the email address if mailing direct)
 
A

Andibevan

I give up - I can only presume that the maximum size of a MSGBOX is
dependent on your screen size and configuration. As a result I will give up
on this simple approach and have to do something a bit more involved.

Thanks for you help though :)

Andi
 
B

Bob Phillips

That may well be it. I have a resolution of 1600x1200 on my laptop, so I get
quite a bit of real estate.

--

HTH

RP
(remove nothere from the email address if mailing direct)
 
D

David F. Schrader

Remember that providing messages to the user is an
art which must be handled carefully. Everything must
go through one of the "media" sensory systems you
have available. Right now you are targeting visual
messaging.

If you must present a great deal of information then
creating your own "form" and displaying it is probably
the best way to go. If you have only a limited amount
to display using the built-in "MsgBox" capability is
easier than re-inventing Rome.

If you are really "big" into using the "Msgbox" you
can use a lot of the "built-in" Microsoft "goodies"
to make the "window" look pretty. For example:
you can use the "vbTab" and the "vbCrLf" to add
both vertical and horizontal spacing.

Yes, the size *is* controlled by the size of the user's
screen so you really need to plan for the screen of
user with *smallest* monitor not the largest. The
best thing is to remember the KISS principle when
using MsgBox - "Keep It Simple (Stupid)", That
way the message shouldn't over-flow the screen
display.

David
 
A

Andibevan

I am working on a work laptop which is lovely and light but about the size
of a box of matches.

Ta

Andi
 
B

Bob Phillips

Yeah, mine is a personal Sony Vaio. It has a bi screen (16"),great
resolution (1600x1200 max), but it is quite heavy.

Bob
 
A

Andibevan

Thanks David,

I am in agreement with you - ideally I would prefer to use message boxes as
the information I am trying to display is very simple (the location of a
file), the problem is that the on small laptops (like mine) the screen
margins cause a wordwrap effect for MSGBOX's (forgive me if my terminology
is incorrect but you get the idea). As a result I will probably end up
resorting to building a dynamic userform of some sort - like you say I feel
like I am going to end up re-inventing the wheel.

Andi
 
D

David F. Schrader

In that case, you *MAY* want to look into finding or
writing a function that takes a long file path and
"munges" it down to a pre-defined (by you) limited
length and replaces the "replaced portion" with a set
of ellipses (you know - "...").

If you pass the file name to that (just before) you pass
it to the MsgBox you'll get back a value that will
*always* fit. It looks a little odd (MS does/did it quite
a lot) but it makes displays cleaner. You get something
like:
C:\Windows\...\Quid\dev\xy3245\ddl9732.dll
C:\Windows\system32\...\xy3245\ddl9732.dll
C:\Windows\system32\hokem\...\ddl9732.dll

If you set the "length" quite short you could get something
like:
C:\Windows\...\ddl9732.dll
but that may defeat the entire purpose of what you're
trying to do.

I can't remember what they call this technique other than
"munging" although there are other (probably better)
names. I wrote one my self once - no don't ask it was
proprietary and I can't distribute it, sorry - so it's not
that hard to do, just a matter of making sure you get
everything handled in the right order.

Good luck Andi.

David
 

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