Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: per VBA Schriftgrösse an Textbox anpassen

per VBA Schriftgrösse an Textbox anpassen
Mandy
Hallo,
Habe auf einem Tabellenblatt eine Textbox, die hat eine feste Grösse. Nun wird Text in die Textbox kopiert, mal mehr mal weniger.
Manchmal ist so viel Text drin, dass dieser am Ende nicht mehr sichtbar ist.
Gibt es per VBA die Möglichkeit, die Grösse der Schrift so anzupassen, dass immer der komplette Text in die Textbox passt ? Also je mehr Text, um so kleiner sie Schriftgrösse.
Danke
Mandy
Anzeige
AW: per VBA Schriftgrösse an Textbox anpassen
07.07.2011 12:43:08
MichaV
Hallo Mandy,
das geht nur mit basteln und ausprobieren. Du musst eine Monospace- Schriftart verwenden, damit Worte mit vielen schmalen Buchstaben genauso lang sind wie Worte mit breiten Buchstaben. Dann zählst Du aus ab welcher Länge Du welche Schriftgrösse einsetzen willst.

select case len(textbox1.text)
case is

Aber auch das ist nur ein Behelf.
Gruss- Micha
Anzeige
AW: per VBA Schriftgrösse an Textbox anpassen
07.07.2011 12:57:43
Nepumuk
Hallo,
oder du machst es dynamisch.
Option Explicit

Private Sub TextBox1_Change()
    Const TEXTBOX_HEIGHT = 85 'anpassen !!!
    Const TEXTBOX_WIDTH = 165 'anpassen !!!
    Application.ScreenUpdating = False
    With TextBox1
        If .TextLength > 0 Then
            .AutoSize = True
            If .Height > TEXTBOX_HEIGHT Then
                Do While .Height > TEXTBOX_HEIGHT
                    .Font.Size = .Font.Size - 0.1
                    .Width = TEXTBOX_WIDTH
                Loop
            Else
                Do While .Height < TEXTBOX_HEIGHT
                    .Font.Size = .Font.Size + 0.1
                    .Width = TEXTBOX_WIDTH
                Loop
                If .Height > TEXTBOX_HEIGHT Then _
                    .Font.Size = .Font.Size - 0.1
            End If
            .AutoSize = False
            .Width = TEXTBOX_WIDTH
            .Height = TEXTBOX_HEIGHT
        Else
            .Width = TEXTBOX_WIDTH
            .Height = TEXTBOX_HEIGHT
            .Font.Size = 10
        End If
    End With
    Application.ScreenUpdating = True
End Sub

Gruß
Nepumuk
Anzeige
AW: per VBA Schriftgrösse an Textbox anpassen
07.07.2011 13:34:11
MichaV
Hallo Nepumuk,
dass die Textbox ne Autosize- Eigenschaft hat wusste ich garnicht. Dein Code funzt bei mir trotzdem nicht, die Konstanten für Height und Width habe ich angepasst, Textbox und Text bleibt immer gleich gross. Kanns an XL2007 liegen?
Gruss- Micha
AW: per VBA Schriftgrösse an Textbox anpassen
07.07.2011 13:50:54
Nepumuk
Hallo Micha,
hast du Multiline auch auf True gestellt?
Gruß
Nepumuk
Anzeige
AW: per VBA Schriftgrösse an Textbox anpassen
07.07.2011 13:55:50
MichaV
Hallo Nepumuk,
nö, hab ich wohl überlesen :-)
Jetzt funzt es, Danke.
Gruss- Micha
Coole Sache, vielen Dank owT
07.07.2011 15:01:04
Mandy
;
Anzeige
Anzeige

Infobox / Tutorial

Schriftgröße der Textbox in Excel VBA automatisch anpassen


Schritt-für-Schritt-Anleitung

Um die Schriftgröße einer Textbox in Excel VBA automatisch an die Länge des Textes anzupassen, kannst Du den folgenden Code verwenden. Diese Methode stellt sicher, dass der gesamte Text in der Textbox sichtbar bleibt.

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (Alt + F11).
  2. Füge ein neues Modul hinzu oder wähle das bestehende Modul mit Deiner Textbox.
  3. Kopiere den folgenden Code in das Modul:
Option Explicit

Private Sub TextBox1_Change()
    Const TEXTBOX_HEIGHT = 85 ' anpassen !!!
    Const TEXTBOX_WIDTH = 165  ' anpassen !!!

    Application.ScreenUpdating = False
    With TextBox1
        If .TextLength > 0 Then
            .AutoSize = True
            Do While .Height > TEXTBOX_HEIGHT
                .Font.Size = .Font.Size - 0.1
                .Width = TEXTBOX_WIDTH
            Loop
        Else
            .Width = TEXTBOX_WIDTH
            .Height = TEXTBOX_HEIGHT
            .Font.Size = 10
        End If
        .AutoSize = False
        .Width = TEXTBOX_WIDTH
        .Height = TEXTBOX_HEIGHT
    End With
    Application.ScreenUpdating = True
End Sub
  1. Stelle sicher, dass die Eigenschaft Multiline der Textbox auf True gesetzt ist, damit der Text richtig angezeigt wird.

Häufige Fehler und Lösungen

  • Textbox bleibt gleich groß: Überprüfe, ob die Multiline-Eigenschaft auf True gesetzt ist. Dies ist notwendig, damit der VBA-Code korrekt funktioniert.

  • Text wird abgeschnitten: Stelle sicher, dass die Konstanten TEXTBOX_HEIGHT und TEXTBOX_WIDTH an die Größe Deiner Textbox angepasst sind.

  • Code läuft nicht in Excel 2007: Einige Eigenschaften könnten in älteren Excel-Versionen anders implementiert sein. Teste den Code in einer neueren Version, wenn möglich.


Alternative Methoden

Falls Du die Schriftgröße in einer PowerPoint-Präsentation automatisch anpassen möchtest, kannst Du ähnliche VBA-Techniken verwenden. Der Code wird jedoch leicht variieren, um die spezifischen Eigenschaften von PowerPoint zu nutzen.

Sub AutoFitTextInShape()
    Dim shp As Shape
    Set shp = ActivePresentation.Slides(1).Shapes(1) ' Passe die Slide und Shape-Index an

    With shp.TextFrame
        .AutoSize = True
        If .TextRange.Length > 0 Then
            Do While .Height > 100 ' Beispielhöhe
                .TextRange.Font.Size = .TextRange.Font.Size - 1
            Loop
        End If
    End With
End Sub

Praktische Beispiele

  • Beispiel 1: Wenn Du eine Textbox für Notizen verwenden möchtest, die sich an den eingegebenen Text anpasst, kannst Du den obigen VBA-Code direkt verwenden.

  • Beispiel 2: In PowerPoint kannst Du mithilfe des Codes in der vorherigen Sektion die Schriftgröße eines Textfeldes automatisch anpassen, je nachdem, wie viel Text eingegeben wird.


Tipps für Profis

  • Verwende Monospace-Schriftarten (wie Courier New), wenn Du sicherstellen möchtest, dass die Schriftgröße gleichmäßig wirkt, unabhängig von der Wortlänge.

  • Experimentiere mit den Werten der Schriftgröße, um das optimale Ergebnis für Deine spezifischen Anforderungen zu erzielen.

  • Nutze Fehlerbehandlung in Deinem VBA-Code, um sicherzustellen, dass der Code auch bei unerwarteten Eingaben stabil läuft.


FAQ: Häufige Fragen

1. Wie kann ich die Schriftgröße in PowerPoint automatisch anpassen?
Du kannst einen ähnlichen VBA-Code wie in Excel verwenden, um die Schriftgröße in einem PowerPoint-Textfeld anzupassen, indem Du die .TextFrame-Eigenschaft verwendest.

2. Funktioniert dieser Code in allen Excel-Versionen?
Der Code sollte in neueren Excel-Versionen gut funktionieren. Bei Excel 2007 können einige Eigenschaften anders sein, weshalb es hilfreich ist, die Version zu überprüfen, wenn Probleme auftreten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige