2017-03-23 2 views
0

Ich bin meiner Meinung nach mit einem ziemlich einfachen Problem stecken geblieben, aber ich kann dafür keine Lösung finden.Standardtextbox mit formatiertem Text in Excel erstellen

Ich versuche, ein Standard-Textfeld (Einfügen -> Formen -> Textfeld) mit einer bestimmten Füllfarbe (blau, Akzent 1, leichter 80%) und einem bestimmten Text (Arbeit erledigt: [leerer Absatz] Ergebnisse : [leerer Absatz] Schlussfolgerung: [leerer Absatz]), wobei der Text im Textfeld eine rote Schriftfarbe hat und fett formatiert ist enter image description here. Ich habe versucht, ein Makro während des Erstellens dieses Textfelds aufzeichnen, aber ich bekomme immer eine Fehlermeldung: enter image description here, wenn ich das Makro ausführen. Da ich genau dieses Textfeld (ohne den schwarzen Text, dies ist nur ein Beispiel) oft brauche, wäre es großartig, ein Makro dafür zu haben, das ich an mein angepasstes Band anhängen könnte.

Ich fand heraus, dass es ziemlich schwierig ist, Formatierungselemente in einem Textfeld mit VBA zu ändern. Hat aber noch jemand eine Idee, wie man mit VBA mein Standard-Textfeld erreichen kann ?!

Code:

Sub Textbox() 
' 
' Textbox Macro 
' 
' Keyboard Shortcut: Ctrl+Shift+Y 
' 
    ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 59.25, 48.75, 292.5 _ 
     , 109.5).Select 
    With Selection.ShapeRange.Fill 
     .Visible = msoTrue 
     .ForeColor.ObjectThemeColor = msoThemeColorText2 
     .ForeColor.TintAndShade = 0 
     .ForeColor.Brightness = 0.8000000119 
     .Transparency = 0 
     .Solid 
    End With 
    DEBUG HERE -> With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 11).Font.Fill 
     .Visible = msoTrue 
     .ForeColor.RGB = RGB(255, 0, 0) 
     .Transparency = 0 
     .Solid 
    End With 
    With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(13, 10).Font.Fill 
     .Visible = msoTrue 
     .ForeColor.RGB = RGB(255, 0, 0) 
     .Transparency = 0 
     .Solid 
    End With 
    With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(24, 11).Font.Fill 
     .Visible = msoTrue 
     .ForeColor.RGB = RGB(255, 0, 0) 
     .Transparency = 0 
     .Solid 
    End With 
    Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _ 
     "Work Done:" & Chr(13) & "" & Chr(13) & "Findings:" & Chr(13) & "" & Chr(13) & "Conclusion:" 
    Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 11).ParagraphFormat. _ 
     FirstLineIndent = 0 
    With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 4).Font 
     .Bold = msoTrue 
     .NameComplexScript = "+mn-cs" 
     .NameFarEast = "+mn-ea" 
     .Fill.Visible = msoTrue 
     .Fill.ForeColor.RGB = RGB(255, 0, 0) 
     .Fill.Transparency = 0 
     .Fill.Solid 
     .Size = 11 
     .Name = "+mn-lt" 
    End With 
    With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(5, 7).Font 
     .BaselineOffset = 0 
     .Bold = msoTrue 
     .NameComplexScript = "+mn-cs" 
     .NameFarEast = "+mn-ea" 
     .Fill.Visible = msoTrue 
     .Fill.ForeColor.RGB = RGB(255, 0, 0) 
     .Fill.Transparency = 0 
     .Fill.Solid 
     .Size = 11 
     .Name = "+mn-lt" 
    End With 
    Selection.ShapeRange(1).TextFrame2.TextRange.Characters(12, 1).ParagraphFormat. _ 
     FirstLineIndent = 0 
    With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(12, 1).Font 
     .BaselineOffset = 0 
     .NameComplexScript = "+mn-cs" 
     .NameFarEast = "+mn-ea" 
     .Fill.Visible = msoTrue 
     .Fill.ForeColor.ObjectThemeColor = msoThemeColorDark1 
     .Fill.ForeColor.TintAndShade = 0 
     .Fill.ForeColor.Brightness = 0 
     .Fill.Transparency = 0 
     .Fill.Solid 
     .Size = 11 
     .Name = "+mn-lt" 
    End With 
    Selection.ShapeRange(1).TextFrame2.TextRange.Characters(13, 10).ParagraphFormat _ 
     .FirstLineIndent = 0 
    With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(13, 10).Font 
     .BaselineOffset = 0 
     .Bold = msoTrue 
     .NameComplexScript = "+mn-cs" 
     .NameFarEast = "+mn-ea" 
     .Fill.Visible = msoTrue 
     .Fill.ForeColor.RGB = RGB(255, 0, 0) 
     .Fill.Transparency = 0 
     .Fill.Solid 
     .Size = 11 
     .Name = "+mn-lt" 
    End With 
    Selection.ShapeRange(1).TextFrame2.TextRange.Characters(23, 1).ParagraphFormat. _ 
     FirstLineIndent = 0 
    With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(23, 1).Font 
     .BaselineOffset = 0 
     .NameComplexScript = "+mn-cs" 
     .NameFarEast = "+mn-ea" 
     .Fill.Visible = msoTrue 
     .Fill.ForeColor.ObjectThemeColor = msoThemeColorDark1 
     .Fill.ForeColor.TintAndShade = 0 
     .Fill.ForeColor.Brightness = 0 
     .Fill.Transparency = 0 
     .Fill.Solid 
     .Size = 11 
     .Name = "+mn-lt" 
    End With 
    Selection.ShapeRange(1).TextFrame2.TextRange.Characters(24, 11).ParagraphFormat _ 
     .FirstLineIndent = 0 
    With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(24, 11).Font 
     .BaselineOffset = 0 
     .Bold = msoTrue 
     .NameComplexScript = "+mn-cs" 
     .NameFarEast = "+mn-ea" 
     .Fill.Visible = msoTrue 
     .Fill.ForeColor.RGB = RGB(255, 0, 0) 
     .Fill.Transparency = 0 
     .Fill.Solid 
     .Size = 11 
     .Name = "+mn-lt" 
    End With 
End Sub 
+0

Sie sollten den aufgezeichneten Makrocode enthalten. Anstatt das Makro auszuführen, können Sie es auch debuggen, um herauszufinden, was genau das Problem verursacht. Zum Debuggen können Sie STEP INTO (normalerweise F8) im VBA-Editor verwenden. –

+0

@AdamVincent: Ich habe meinen Code hochgeladen und einen Kommentar eingefügt, wo er debuggt. Ich weiß jedoch nicht, was das Problem verursacht. –

+4

Ihr Makro versucht, Text zu formatieren, aber zu diesem Zeitpunkt befindet sich kein Text in der Textbox. – Rory

Antwort

1

try this:

Sub Textbox() 
' 
' Textbox Macro 
' 
' Keyboard Shortcut: Ctrl+Shift+Y 
' 
    With ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 59.25, 48.75, 292.5, 109.5) '<--| add and reference a new shape 
     With .Fill '<--| reference referenced shape 'Fill' property 
      .Visible = msoTrue 
      .ForeColor.ObjectThemeColor = msoThemeColorText2 
      .ForeColor.TintAndShade = 0 
      .ForeColor.Brightness = 0.8000000119 
      .Transparency = 0 
      .Solid 
     End With 
     With .TextFrame2 '<--| reference referenced shape 'TextFrame2' property 
      .TextRange.Characters.Text = "Work Done:" & Chr(13) & "" & Chr(13) & "Findings:" & Chr(13) & "" & Chr(13) & "Conclusion:" 
      With .TextRange.Characters(1, 11).Font.Fill 
       .Visible = msoTrue 
       .ForeColor.RGB = RGB(255, 0, 0) 
       .Transparency = 0 
       .Solid 
      End With 
      With .TextRange.Characters(13, 10).Font.Fill 
       .Visible = msoTrue 
       .ForeColor.RGB = RGB(255, 0, 0) 
       .Transparency = 0 
       .Solid 
      End With 
      With .TextRange.Characters(24, 11).Font.Fill 
       .Visible = msoTrue 
       .ForeColor.RGB = RGB(255, 0, 0) 
       .Transparency = 0 
       .Solid 
      End With 
      .TextRange.Characters(1, 11).ParagraphFormat.FirstLineIndent = 0 
      With .TextRange.Characters(1, 4).Font 
       .BaselineOffset = 0 
       .Bold = msoTrue 
       .NameComplexScript = "+mn-cs" 
       .NameFarEast = "+mn-ea" 
       .Fill.Visible = msoTrue 
       .Fill.ForeColor.RGB = RGB(255, 0, 0) 
       .Fill.Transparency = 0 
       .Fill.Solid 
       .Size = 11 
       .Name = "+mn-lt" 
      End With 
      With .TextRange.Characters(5, 7).Font 
       .BaselineOffset = 0 
       .Bold = msoTrue 
       .NameComplexScript = "+mn-cs" 
       .NameFarEast = "+mn-ea" 
       .Fill.Visible = msoTrue 
       .Fill.ForeColor.RGB = RGB(255, 0, 0) 
       .Fill.Transparency = 0 
       .Fill.Solid 
       .Size = 11 
       .Name = "+mn-lt" 
      End With 
     End With 
    End With 
End Sub 
+0

Das funktioniert auch gut! Vielen Dank für Ihre Hilfe! –

+0

Sie sind willkommen. Vielleicht möchten Sie die Antwort als akzeptiert markieren Danke – user3598756

0

Dies ist mein letzter Code am Ende:

Sub Textbox() ' ' Textbox Macro ' ' Keyboard Shortcut: Ctrl+Shift+Y ' ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 59.25, 48.75, 292.5 _ , 109.5).Select Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _ "Work Done:" & Chr(13) & "" & Chr(13) & "Findings:" & Chr(13) & "" & Chr(13) & "Conclusion:" Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 11).ParagraphFormat. _ FirstLineIndent = 0 With Selection.ShapeRange.Fill .Visible = msoTrue .ForeColor.ObjectThemeColor = msoThemeColorText2 .ForeColor.TintAndShade = 0 .ForeColor.Brightness = 0.8000000119 .Transparency = 0 .Solid End With With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 11).Font.Fill .Visible = msoTrue .ForeColor.RGB = RGB(255, 0, 0) .Transparency = 0 .Solid End With With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(13, 10).Font.Fill .Visible = msoTrue .ForeColor.RGB = RGB(255, 0, 0) .Transparency = 0 .Solid End With With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(24, 11).Font.Fill .Visible = msoTrue .ForeColor.RGB = RGB(255, 0, 0) .Transparency = 0 .Solid End With With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 4).Font .Bold = msoTrue .NameComplexScript = "+mn-cs" .NameFarEast = "+mn-ea" .Fill.Visible = msoTrue .Fill.ForeColor.RGB = RGB(255, 0, 0) .Fill.Transparency = 0 .Fill.Solid .Size = 11 .Name = "+mn-lt" End With With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(5, 7).Font .BaselineOffset = 0 .Bold = msoTrue .NameComplexScript = "+mn-cs" .NameFarEast = "+mn-ea" .Fill.Visible = msoTrue .Fill.ForeColor.RGB = RGB(255, 0, 0) .Fill.Transparency = 0 .Fill.Solid .Size = 11 .Name = "+mn-lt" End With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(12, 1).ParagraphFormat. _ FirstLineIndent = 0 With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(12, 1).Font .BaselineOffset = 0 .NameComplexScript = "+mn-cs" .NameFarEast = "+mn-ea" .Fill.Visible = msoTrue .Fill.ForeColor.ObjectThemeColor = msoThemeColorDark1 .Fill.ForeColor.TintAndShade = 0 .Fill.ForeColor.Brightness = 0 .Fill.Transparency = 0 .Fill.Solid .Size = 11 .Name = "+mn-lt" End With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(13, 10).ParagraphFormat _ .FirstLineIndent = 0 With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(13, 10).Font .BaselineOffset = 0 .Bold = msoTrue .NameComplexScript = "+mn-cs" .NameFarEast = "+mn-ea" .Fill.Visible = msoTrue .Fill.ForeColor.RGB = RGB(255, 0, 0) .Fill.Transparency = 0 .Fill.Solid .Size = 11 .Name = "+mn-lt" End With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(23, 1).ParagraphFormat. _ FirstLineIndent = 0 With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(23, 1).Font .BaselineOffset = 0 .NameComplexScript = "+mn-cs" .NameFarEast = "+mn-ea" .Fill.Visible = msoTrue .Fill.ForeColor.ObjectThemeColor = msoThemeColorDark1 .Fill.ForeColor.TintAndShade = 0 .Fill.ForeColor.Brightness = 0 .Fill.Transparency = 0 .Fill.Solid .Size = 11 .Name = "+mn-lt" End With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(24, 11).ParagraphFormat _ .FirstLineIndent = 0 With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(24, 11).Font .BaselineOffset = 0 .Bold = msoTrue .NameComplexScript = "+mn-cs" .NameFarEast = "+mn-ea" .Fill.Visible = msoTrue .Fill.ForeColor.RGB = RGB(255, 0, 0) .Fill.Transparency = 0 .Fill.Solid .Size = 11 .Name = "+mn-lt" End With End Sub

+0

Absolut sollten Sie Ihren endgültigen Code teilen, aber der richtige Ort dafür ist, indem Sie Ihrer ursprünglichen Frage einen neuen Abschnitt hinzufügen –

Verwandte Themen