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

Text einrücken per VBA

Forumthread: Text einrücken per VBA

Text einrücken per VBA
10.06.2014 15:21:53
Showd0wn

Hallo,
Ich habe einen Userform bei der ich einen Text eingeben kann & dieser wird dann in einre Zelle gespeichert. Danach kann man erneut etwas eingeben. Der alte Text wird gespeichert und der neue wird per Zeilenumbruch in die gleiche Zelle gespeichert (per vbCrLf). Ich hätte gerne, dass der neue Text allerdings eingrückt ist, also immer eine Leerzeile pro neue Zeile. Wie mache ich das?
Der entsprechende Code
Initialize()
inhalt = ActiveCell.Value & vbCrLf
____
checkbox_Click()
ausgabe = inhalt & ": " & tbEingabe.Value
Gru0

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text einrücken per VBA
10.06.2014 15:23:26
Hajo_Zi
inhalt = ActiveCell.Value & vbCrLf &" "

AW: Text einrücken per VBA
10.06.2014 15:23:57
Hajo_Zi
inhalt = ActiveCell.Value & vbCrLf &" "

AW: Text einrücken per VBA
10.06.2014 15:45:56
Showd0wn
Danke, Das hatte ich auch schon, aber dann wird immer nur eine Leerzeile gemacht. Beim 2. Durchlauf ist das erwünscht. Aber dann beim 3. sollen 2, beim 4. Durchlauf 3 Leerzeilen und so weiter

Anzeige
Einrücken nicht gleichbedeutend m.Leerzeilen, ...
10.06.2014 16:16:07
Luc:-?
…Showdown!
inhalt = ActiveCell.Value & String(laufvariable + 1, vbLf)
(Achtung! vbCrLf generiert 2 Zeichen; das ginge nicht mit vbFkt String, sondern nur mit WorksheetFunction.Rept, dann aber mit vertauschten Argumenten!)
Falls deine laufvariable mit 0 startet, muss es ggf +2 heißen.
Geht es aber tatsächlich ums (zusätzliche) Einrücken, käme evtl .Indent ins Spiel.
Gruß Luc :-?

Anzeige
AW: Text einrücken per VBA
10.06.2014 21:45:12
Uduuh
Hallo,
die Anzahl der LZ kann man doch berechnen.
Private Sub CommandButton1_Click()
Dim i As Integer
If Len(ActiveCell) = 0 Then
ActiveCell = TextBox1
Else
i = Len(ActiveCell) - Len(Replace(ActiveCell, Chr(10), ""))
ActiveCell = ActiveCell & Chr(10) & String(i + 1, Chr(32)) & TextBox1
End If
ActiveCell.WrapText = True
ActiveCell.Font.Name = "courier new"
End Sub
Gruß aus’m Pott
Udo

Anzeige
AW: Text einrücken per VBA
12.06.2014 10:58:00
Daniel P.
Danke, muss aber sagen dass ich den Code nicht wirklich verstehe. wie binde ich den in meinen code ein?

AW: Text einrücken per VBA
12.06.2014 11:10:15
Rudi Maintaire
Hallo,
wie binde ich den in meinen code ein?
wie sollen wir das wissen? Dafür ist dein Fragment seeeehr knapp.
Mal mit Kommentaren
Private Sub CommandButton1_Click()
Dim i As Integer
If Len(ActiveCell) = 0 Then 'Zelle ist leer
ActiveCell = TextBox1
Else
'Anzahl Zeilenumbrüche
i = Len(ActiveCell) - Len(Replace(ActiveCell, Chr(10), ""))
'Zelleninhalt = Zellinhalt & Umbruch & Leerzeichen & Inhalt Textbox
ActiveCell = ActiveCell & Chr(10) & String(i + 1, Chr(32)) & tbEingabe
End If
ActiveCell.WrapText = True  'Zelle mit Zeilenumbruch
ActiveCell.Font.Name = "courier new"  'Schriftart
End Sub

Zur Schriftart: Einrücken mit Leerzeichen ist nur bei nicht proportionalen Schriften wirklich sinnvoll.
Gruß
Rudi

Anzeige
;
Anzeige

Infobox / Tutorial

Text einrücken in Excel per VBA


Schritt-für-Schritt-Anleitung

Um den Text in einer Excel-Zelle per VBA einzurücken, befolge diese Schritte:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklicke auf "VBAProject (DeinWorkbookName)", gehe zu "Einfügen" und wähle "Modul".

  3. Kopiere den folgenden Code in das Modul:

    Private Sub CommandButton1_Click()
        Dim i As Integer
        If Len(ActiveCell) = 0 Then
            ActiveCell = TextBox1
        Else
            ' Anzahl Zeilenumbrüche zählen
            i = Len(ActiveCell) - Len(Replace(ActiveCell, Chr(10), ""))
            ' Zelleninhalt = Zellinhalt & Umbruch & Leerzeichen & Inhalt Textbox
            ActiveCell = ActiveCell & Chr(10) & String(i + 1, Chr(32)) & TextBox1
        End If
        ActiveCell.WrapText = True  ' Zelle mit Zeilenumbruch
        ActiveCell.Font.Name = "Courier New"  ' Schriftart
    End Sub
  4. Füge einen Button in deine Userform hinzu: Ziehe einen Button auf die Userform und nenne ihn beispielsweise "Text einfügen".

  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Teste die Funktion: Gib etwas in die TextBox ein, klicke auf den Button und beobachte, wie der Text in die aktive Zelle mit dem gewünschten Einrücken eingefügt wird.


Häufige Fehler und Lösungen

  • Fehler: Text wird nicht richtig eingerückt
    Lösung: Stelle sicher, dass die Schriftart auf "Courier New" eingestellt ist, da proportionalen Schriftarten das Einrücken mit Leerzeichen möglicherweise nicht korrekt darstellen.

  • Fehler: Keine Zeilenumbrüche
    Lösung: Überprüfe, ob WrapText auf True gesetzt ist. Wenn nicht, füge ActiveCell.WrapText = True hinzu.


Alternative Methoden

Eine alternative Möglichkeit, um Text in Excel einzurücken, ist die Verwendung von HTML-Formatierungen, besonders wenn du den Text in eine HTML-Tabelle einfügen möchtest. Hierbei kannst du den <br>-Tag für Zeilenumbrüche und CSS für das Einrücken verwenden.

  • Beispiel für HTML:
    <p style="text-indent: 20px;">Dein Text hier</p>

Praktische Beispiele

  1. Einrücken beim ersten Durchlauf: Wenn du beim ersten Eingeben keinen Einzug möchtest, aber ab dem zweiten Durchlauf, kannst du die If-Bedingung entsprechend anpassen.

  2. VBA zum Einrücken in Word: Falls du auch in Word arbeiten möchtest, kannst du ähnliche VBA-Methoden verwenden, um Text in ein Word-Dokument einzurücken.


Tipps für Profis

  • Nutze WorksheetFunction.Rept anstelle von String, um die Anzahl der Leerzeichen dynamisch zu steuern.
  • Achte darauf, die Zeilenumbrüche richtig zu zählen, um das Einrücken präzise anzupassen.
  • Experimentiere mit verschiedenen Schriftarten und -größen, um das gewünschte Layout zu erreichen.

FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um eine andere Schriftart zu verwenden?
Du kannst die Schriftart ändern, indem du den Namen in der Zeile ActiveCell.Font.Name = "Courier New" anpasst.

2. Was ist der Unterschied zwischen vbCrLf und Chr(10) für Zeilenumbrüche?
vbCrLf fügt einen Wagenrücklauf und Zeilenumbruch ein, während Chr(10) nur einen Zeilenumbruch erzeugt. In den meisten Fällen ist Chr(10) ausreichend.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige