Question

I am trying to do two things in Excel 2013 using VBA:

  1. Get FORMATTED text from a Textbox, and manipulate it (like HTML perhaps). And
  2. Copy FORMATTED text from a Textbox, to another Textbox.

I have tried two things:

'Copies text only. No formatting, but with proper line breaks
Dim txtContent As String
txtContent = Worksheets("TextBox").Shapes("TextBox1").TextFrame.Characters.Text
Worksheets("TextBox").Shapes("TextBox 3").TextFrame.Characters.Text = txtContent

The second approach was similar to above:

'Does not do anything. Produces Run-time error 91
Dim myFrame As TextFrame
myFrame = Worksheets("TextBox").Shapes("TextBox1").TextFrame
Worksheets("TextBox").Shapes("TextBox 3").TextFrame = myFrame

Please help.

Was it helpful?

Solution 2

You can either set or retrieve the formatting of text characters in a TextBox as follows:

Sub durall()
    ActiveSheet.Shapes("TextBox 1").TextFrame.Characters.Font.ColorIndex = 3
End Sub

OTHER TIPS

Sub Tester()
    CopyText ActiveSheet.Shapes("txtOne").TextFrame, _
             ActiveSheet.Shapes("txtTwo").TextFrame
End Sub



Sub CopyText(tf1 As TextFrame, tf2 As TextFrame)

    Dim n, f As Font

    tf2.Characters.Text = tf1.Characters.Text

    For n = 1 To tf1.Characters.Count
        Set f = tf1.Characters(n, 1).Font
        With tf2.Characters(n, 1).Font
            .Bold = f.Bold
            .Color = f.Color
            .Italic = f.Italic
            'add other properties as needed...
        End With
    Next n
End Sub
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top