Vertical Center Alignment for Labels

B

Bishop

How do I center vertically in a label? I see how to center it horizontally
using the TextAlign property but I don't see a property that handles vertical
alignment.
 
R

Ryan H

I don't think you can do that. Just double click the botton right hand
corner and the label dimensions will conform to the text in it. Hope this
helps! if so, let me know, click 'YES" below.
 
R

Rick Rothstein

Where is this Label... on the worksheet or on a UserForm? If on the
worksheet, where did you get the Label from... the Forms toolbar or the
Control Toolbox toolbar?
 
B

Bishop

It's in a userform that I created.

Rick Rothstein said:
Where is this Label... on the worksheet or on a UserForm? If on the
worksheet, where did you get the Label from... the Forms toolbar or the
Control Toolbox toolbar?

--
Rick (MVP - Excel)




.
 
B

Bishop

I don't want to change the label dimensions.

Ryan H said:
I don't think you can do that. Just double click the botton right hand
corner and the label dimensions will conform to the text in it. Hope this
helps! if so, let me know, click 'YES" below.
 
R

Rick Rothstein

Good! Are you up for a kludge solution? Use two Label controls... make the
first one the size you wanted the Label to originally be, then put a second
smaller Label control on top of it (don't worry where as we are going to
position it via code). Make the both Labels the same background color. Add a
border around the first (big) one if you want and remove its Caption. Make
sure the second (smaller) Label has no border and set its TextAlign property
to 2-fmTextAlignCenter. Now, just use code something like the following to
assign the text to the (AutoSize'd Label2) and then center that assigned
text (in the smaller Label) within the bigger Label. Here I'm assuming the
bigger Label is named Label1 and the smaller Label is named Label2 and I
also provided comments to explain why I did what I did...

With Label2
' First, assign your Multi-Line text to the smaller Label this way
.AutoSize = False
' Make the Label big enough to house your longest and tallest text
.Width = Label1.Width
.Height = Label1.Height
' Now assign the text using Line Feeds to separate lines of text
.Caption = "This is Line Number 1" & vbLf & _
"and here's Line 2"
' This next line shrinks the Label to the limit of the text
.AutoSize = True

' Next, center the smaller Label within the larger one
.Top = Label1.Top + (Label1.Height - .Height) / 2
.Left = Label1.Left + (Label1.Width - .Width) / 2
End With
 

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