Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Text-Ausrichtung in Shape

Forumthread: VBA Text-Ausrichtung in Shape

VBA Text-Ausrichtung in Shape
16.05.2021 13:55:34
W
Hallo Forum,
ich brauche wieder einmal die Unterstützung von Profis.
Ich habe eine Shape "Type:=msoShapeActionButtonCustom" erstellt. Jetzt möchte ich den Text darin noch ausrichten.
Bisher habe ich folgende Einstellungen vorgenommen:
.TextFrame2.HorizontalAnchor = msoAnchorCenter
.TextFrame2.VerticalAnchor = msoAnchorMiddle
Allerdings ist es mir bisher nicht gelungen, einen mehrzeiligen Text so auszurichten, dass die Worte pro Zeile zentriert sind; alle Zeilen sind linksbündig ausgerichtet.
Welche Option muss ich setzen, um dieses Ziel zu erreichen?
Bild davon: Userbild
Gruß
Werner
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Text-Ausrichtung in Shape
16.05.2021 14:35:01
Dieter(Drummer)
Hllo Werner,
ichgehöre nicht zu den Spezialisten, aber evtl hilft dir das schon weiter.
Diesen Teil mal ersetzen:
  • .VerticalAnchor = msoAnchorMiddle

  • .VerticalAnchor = msoAnchorMiddle

  • Sonst habe kann ich nicht weiter helfen.
    Gruß, Dieter(Drummer)
    PS In Excel 2010 klappte es.
    Anzeige
    AW: Sorry Werner, war Blödsinn ... owT
    16.05.2021 14:39:18
    Dieter(Drummer)
    AW: Sorry Werner, war Blödsinn ... owT
    16.05.2021 15:50:06
    W
    Hallo Dieter.
    ich habe mir Deine Antwort mindestens 10 mal angeschaut, und habe gesucht, wo der Unterschied zwischen alt und neu sein sollte.
    Bin erst jetzt wieder "Online".
    Gruß und trotzdem "Danke"
    Werner
    AW: VBA Text-Ausrichtung in Shape
    16.05.2021 14:43:33
    Jowe
    Hallo Werner,
    versuch mal:
    
    Sub testCenterTextt()
    Dim shp As Shape
    Dim myText As String
    Dim myTLenght As Long
    myText = "Hi," & vbCr & "mein Freund" & vbCr & "wie geht's Dir?"
    myTLength = Len(myText)
    With ActiveSheet
    Set shp = .Shapes.AddShape(msoShapeActionButtonCustom, 50, 30, 60, 60)
    End With
    With shp
    .TextFrame2.TextRange.Text = myText
    .TextFrame2.TextRange.Characters(1, myTLength).ParagraphFormat.Alignment = msoAlignCenter
    End With
    End Sub
    
    Gruß
    Jochen
    Anzeige
    AW: VBA Text-Ausrichtung in Shape
    16.05.2021 16:12:41
    W
    Hallo Jochen,
    Danke, das war der richtige Hinweis.
    Zuerst hatte ich die Zeile
    .TextFrame2.HorizontalAnchor = msoAnchorCenter
    entfernt, und danach die von Dir vorgeschlagene Zeile
    .TextFrame2.TextRange.Characters(1, myTLength).ParagraphFormat.Alignment = msoAlignCenter
    eingefügt.
    Jetzt bin ich mit dem Ergebnis zufrieden. So hatte ich mir das vorgestellt.
    Ich habe versucht, den neuen Befehl zu verstehen, besonders ".Characters(1, myTLength)." verstehe ich nicht ganz, da die Variable mytLength zum Zeitpunkt der Ausführung leer ist. Googel kennt den Begriff "myTLength" nicht.
    Gruß Werner
    Anzeige
    AW: Gerne, danke für die Rückmeldung
    16.05.2021 17:33:40
    JoWE
    ...weil "myTLength" in meinem Beispiel ja auch eine frei gewählte Variable zur Aufnahme der Zeichenanzahl des Textes im Shape ist. Kann Google also natürlich nicht kennen :=)
    Übrigens:
    "TextFrame2.TextRange.Characters(1, myTLength).ParagraphFormat.Alignment = msoAlignCenter"
    soll den Text ab dem 1. bis zum letzten Zeichen zentriert in das Shape-Element setzen.
    Aber wenn es so funktioniert, ist ja alles prima!.
    Gruß
    Jochen
    Anzeige
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige

    Infobox / Tutorial

    Text-Ausrichtung in Shapes mit VBA optimieren


    Schritt-für-Schritt-Anleitung

    Um den Text in einer Shape mithilfe von Excel VBA auszurichten, befolge diese Schritte:

    1. Shape erstellen: Du kannst eine Shape mit dem Typ msoShapeActionButtonCustom hinzufügen.
    2. Text in die Shape einfügen: Verwende TextFrame2.TextRange.Text, um den gewünschten Text hinzuzufügen.
    3. Ausrichtung des Textes einstellen:
      • Setze die horizontale Ausrichtung auf zentriert:
        .TextFrame2.TextRange.ParagraphFormat.Alignment = msoAlignCenter
      • Stelle sicher, dass die vertikale Ausrichtung korrekt gesetzt ist, z.B.:
        .TextFrame2.VerticalAnchor = msoAnchorMiddle
    4. Mehrzeiligen Text: Um einen mehrzeiligen Text zentriert anzuzeigen, kannst du den gesamten Textbereich anpassen:
      .TextFrame2.TextRange.Characters(1, myTLength).ParagraphFormat.Alignment = msoAlignCenter

    Häufige Fehler und Lösungen

    • Text bleibt linksbündig: Überprüfe, ob die Zeile zum Setzen der ParagraphFormat.Alignment korrekt ist. Es muss der gesamte Textbereich angesprochen werden.
    • Variable myTLength nicht definiert: Stelle sicher, dass du die Länge des Textes korrekt berechnest, bevor du sie verwendest.
    • Shape wird nicht korrekt erstellt: Achte darauf, dass du die Shape in dem richtigen Sheet erzeugst und dass die Dimensionen stimmen.

    Alternative Methoden

    Eine alternative Methode zur Textverarbeitung in Shapes ist die Verwendung von vba graphics. Hier kannst du nicht nur den Text, sondern auch die Schriftart, -größe und -farbe anpassen, was dir mehr Kontrolle über das Aussehen des Textes in der Shape gibt.

    Beispiel für die Verwendung von vba textframe:

    With shp.TextFrame
        .Characters.Text = "Dein Text hier"
        .MarginLeft = 5
        .MarginRight = 5
    End With

    Praktische Beispiele

    Hier ist ein praktisches Beispiel, wie du den Text in einer Shape zentriert ausrichten kannst:

    Sub CenterTextInShape()
        Dim shp As Shape
        Dim myText As String
        myText = "Willkommen!" & vbCr & "Bitte klicken Sie hier."
    
        Set shp = ActiveSheet.Shapes.AddShape(msoShapeActionButtonCustom, 50, 50, 100, 50)
        With shp
            .TextFrame2.TextRange.Text = myText
            .TextFrame2.TextRange.ParagraphFormat.Alignment = msoAlignCenter
        End With
    End Sub

    Dieses Skript erstellt eine Shape und zentriert den Text sowohl horizontal als auch vertikal.


    Tipps für Profis

    • Nutze vba shape text um dynamisch Shapes zu erstellen, die auf bestimmte Bedingungen in deinen Daten reagieren.
    • Experimentiere mit verschiedenen excel vba shape types, um die visuelle Darstellung zu optimieren.
    • Achte darauf, dass du die Textgröße und -farbe anpasst, um die Lesbarkeit zu erhöhen.

    FAQ: Häufige Fragen

    1. Wie kann ich die Schriftart in einer Shape ändern?
    Du kannst die Schriftart ändern, indem du die Font-Eigenschaften in TextFrame2 anpasst:

    shp.TextFrame2.TextRange.Font.Name = "Arial"
    shp.TextFrame2.TextRange.Font.Size = 12

    2. Ich bekomme eine Fehlermeldung beim Ausführen des Codes, was kann ich tun?
    Überprüfe, ob du die richtigen Objekte und Eigenschaften verwendest. Achte darauf, dass die Shape korrekt erstellt wurde, bevor du versuchst, Text oder Formatierungen hinzuzufügen.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige