Working with textboxes in VBA

wpryan

Well-known Member
Joined
May 26, 2009
Messages
534
Office Version
  1. 365
Platform
  1. Windows
Hi All,

I am stumbling through working with textboxes in VBA. I found code that will generate the text box, and how to put it in the location I am looking for, but how to format the text? This is where I'm coming up short... The short bit of code I have is:
VBA Code:
myDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, _    100, 100, 200, 50) _    .TextFrame.Characters.Text = "Test Box"
I would like to center the text in the text box (center and middle alignment). How to do so...?

Thanks in advance...
 

Excel Facts

Workdays for a market open Mon, Wed, Friday?
Yes! Use "0101011" for the weekend argument in NETWORKDAYS.INTL or WORKDAY.INTL. The 7 digits start on Monday. 1 means it is a weekend.
Hi

Using the Macro Recorder, it's pretty straightforward. After a little bit of cleaning up of the code, I managed to have it generate this:

VBA Code:
Sub CreateTextBox()
    Dim MyTB As Shape
    Dim MyDocument As Worksheet
    Set MyDocument = Application.ActiveSheet
    Set MyTB = MyDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 200, 50)
    With MyTB
        .TextFrame2.TextRange.Text = "TestBox"
        .TextFrame2.TextRange.ParagraphFormat.Alignment = msoAlignCenter
        .TextFrame.VerticalAlignment = xlVAlignCenter
    End With
End Sub

I assumed MyDocument was a reference to the Active Sheet.
 
Upvote 0
Hi,
try this update to your code

VBA Code:
Sub AddShape()

    With ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 200, 50).TextFrame
           .Characters.Text = "Test Box"
           .HorizontalAlignment = msoAlignCenter
           .VerticalAlignment = msoAlignCenter
    End With
    
End Sub

Edit.

Dave
 
Upvote 0
Solution
Hi,
try this update to your code

VBA Code:
Sub AddShape()

    With ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 200, 50).TextFrame
           .Characters.Text = "Test Box"
           .HorizontalAlignment = msoAlignCenter
           .VerticalAlignment = msoAlignCenter
    End With
  
End Sub

Edit.

Dave
Thanks for your quick response! Works like a charm... now next question (because there's always a follow up question)... How to add formatting to the text (font, color size)...?
 
Upvote 0
Thanks for your quick response! Works like a charm... now next question (because there's always a follow up question)... How to add formatting to the text (font, color size)...?

update as below

VBA Code:
Sub AddShape()

    With ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 200, 50).TextFrame
           With .Characters
                .Text = "Test Box"
                .Font.Size = 24
                .Font.Color = vbRed
           End With
           .HorizontalAlignment = msoAlignCenter
           .VerticalAlignment = msoAlignCenter
    End With
    
End Sub

Dave
 
Upvote 0
update as below

VBA Code:
Sub AddShape()

    With ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 200, 50).TextFrame
           With .Characters
                .Text = "Test Box"
                .Font.Size = 24
                .Font.Color = vbRed
           End With
           .HorizontalAlignment = msoAlignCenter
           .VerticalAlignment = msoAlignCenter
    End With
   
End Sub

Dave
Thanks a lot, again!
 
Upvote 0
Thanks a lot, again!

welcome

just in case you want to fill the shape with color then modify code as below

VBA Code:
Sub AddShape()
    
    With ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 200, 50)
    
        .Fill.ForeColor.RGB = RGB(255, 255, 0)
        
        With .TextFrame
            With .Characters
                .Text = "Test Box"
                .Font.Size = 24
                .Font.Color = vbRed
            End With
            
            .HorizontalAlignment = msoAlignCenter
            .VerticalAlignment = msoAlignCenter
            
        End With
    End With
    
End Sub

Dave
 
Upvote 0
welcome

just in case you want to fill the shape with color then modify code as below

VBA Code:
Sub AddShape()
   
    With ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 200, 50)
   
        .Fill.ForeColor.RGB = RGB(255, 255, 0)
       
        With .TextFrame
            With .Characters
                .Text = "Test Box"
                .Font.Size = 24
                .Font.Color = vbRed
            End With
           
            .HorizontalAlignment = msoAlignCenter
            .VerticalAlignment = msoAlignCenter
           
        End With
    End With
   
End Sub

Dave
...err what if I don't want a border around the textbox...?
 
Upvote 0
just set line visibility

Rich (BB code):
Sub AddShape()
    
    With ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 200, 50)
    
        .Fill.ForeColor.RGB = RGB(255, 255, 0)
        
        .Line.Visible = msoFalse
        
        With .TextFrame
        
            With .Characters
                .Text = "Test Box"
                .Font.Size = 24
                .Font.Color = vbRed
            End With
            
            .HorizontalAlignment = msoAlignCenter
            .VerticalAlignment = msoAlignCenter
            
            
        End With
        
    End With
    
End Sub
 
Upvote 0
Thanks again! I'm just starting to dabble with objects, it's entirely a different beast!
 
Upvote 0

Forum statistics

Threads
1,214,918
Messages
6,122,241
Members
449,075
Latest member
staticfluids

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top