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

Variable Zeilenumbruch <br>

Forumthread: Variable Zeilenumbruch <br>

Variable Zeilenumbruch <br>
02.11.2021 08:27:03
Andreas
Hallo Leute,
in einer String-Variable wird ein langer Text abgespeichert. Diese Variable soll am Ende auch in einer Email im .htmlBody wiedergegeben werden.
Jetzt hätte ich gerne, dass dieser Text der Variable automatisch umgebrochen wird, damit der Text keine ewig lange Zeile in der Email schreibt. Hierzu muss ja in bekannter Weise
irgendwann automatisch eingefügt werden.
Ist jemanden eine Idee im Kopf, wie man sowas bewerkstelligen kann, br
damit dann der Text zb. so abgebildet wird, wie ich ihn hier gerade schreibe br
um die Zeilen nicht bis ans Ende ausgeschrieben zu bekommen....Im übrigen br
musste ich gerade die > Vielen Dank für Eure Hilfe
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable Zeilenumbruch <br>
02.11.2021 08:43:06
Michael
Moin,
sowas in der Art? Wenn s Dein String wäre:
Replace(s, Chr(10), "<br>")
Grüße
Michael
AW: Variable Zeilenumbruch <br>
02.11.2021 08:45:41
Andreas
ICh dachte mehr an sowas, dass er nach zb 50 Zeichen (aber nicht inmitten eines Wortes) dann das br einfügt.
AW: Variable Zeilenumbruch <br>
02.11.2021 09:02:59
Michael
Das ging mir dann auch durch den Kopf....dass ich da was missverstanden habe ;-)
Versuch's mal damit (der Text wird aus A1 geholt und nach A2 geschrieben):
<pre>Sub Umbruch()
Dim s As String
Dim i As Integer, j As Integer
Dim ZeichenProZeile As Integer
ZeichenProZeile = 50
s = Sheets(1).Cells(1, 1).Value
For i = ZeichenProZeile To Len(s) Step ZeichenProZeile
j = InStr(i, s, " ")
s = Mid(s, 1, j) & "<br>" & Mid(s, j, Len(s))
Next i
Sheets(1).Cells(2, 1).Value = s
End Sub</pre>
Anzeige
AW: Variable Zeilenumbruch <br>
02.11.2021 09:13:56
Michael
Ach so, damit keine Zeile mit einem Leerzeichen beginnt und jede Zeile mindestens ZeichenProZeile lang ist müsste der Code wohl so aussehen:
<pre>Sub Umbruch()
Dim s As String
Dim i As Integer, j As Integer
Dim ZeichenProZeile As Integer
ZeichenProZeile = 55
s = Sheets(1).Cells(1, 1).Value
For i = ZeichenProZeile To Len(s) Step ZeichenProZeile
j = InStr(i, s, " ")
s = Mid(s, 1, j) & "<br>" & Mid(s, j, Len(s))
i = j
Next i
Sheets(1).Cells(2, 1).Value = Replace(Replace(s, "<br> ", "<br>"), " <br>", "<br>")
End Sub</pre>
Anzeige
AW: Variable Zeilenumbruch <br>
02.11.2021 09:05:38
UweD
Hallo
versuch es mal so....

Sub Trennen()
Dim TText As String, TR As Integer, i As Integer
Dim TNeu As String, AB As Integer
TR = 50
TText = "Ist jemanden eine Idee im Kopf, wie man sowas bewerkstelligen kann, damit dann der Text zb. so abgebildet wird, wie ich ihn hier gerade schreibe um die Zeilen nicht bis ans Ende ausgeschrieben zu bekommen. Im übrigen musste ich gerade die weglassen, weil es sonst zu Fehlern hier kommt:)"
AB = 1
For i = 50 To Len(TText) Step 50
Do Until Mid(TText, i, 1) = " "
i = i - 1
Loop
TNeu = TNeu & Mid(TText, AB, i - AB + 1) & "&ltbr&GT"
Next
MsgBox TNeu
End Sub
LG UweD
Anzeige
AW: Variable Zeilenumbruch <br>
02.11.2021 09:11:20
UweD

For i = TR To Len(TText) Step TR

AW: Variable Zeilenumbruch <br>
02.11.2021 09:18:14
Andreas
Hey super ihr beiden. Hat genauso geklappt, wie ich es mir vorgestellt habe!
Vielen Dank für die Hilfestellung!
Update..
02.11.2021 09:20:42
UweD

Option Explicit
Sub Trennen()
Dim TText As String, TR As Integer, i As Integer
Dim TNeu As String, AB As Integer
TR = 50 ' Trennung bei max Zeichzahl je Zeile
TText = "Ist jemanden eine Idee im Kopf, wie man sowas bewerkstelligen kann, damit dann der Text zb. so abgebildet wird, wie ich ihn hier gerade schreibe um die Zeilen nicht bis ans Ende ausgeschrieben zu bekommen. Im übrigen musste ich gerade die weglassen, weil es sonst zu Fehlern hier kommt:)"
AB = 1
For i = TR To Len(TText) Step TR
Do Until Mid(TText, i, 1) = " "
i = i - 1
Loop
TNeu = TNeu & Mid(TText, AB, i - AB + 1) & "&ltbr&GT"
AB = i
Next
TNeu = IIf(TNeu = "", TText, TNeu) ' falls kürzer als 50
Sheets(1).Cells(3, 1) = TNeu
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Variable Zeilenumbruch in Excel mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und stelle sicher, dass du die Entwicklertools aktiviert hast.

  2. Erstelle eine neue VBA-Prozedur:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Füge ein neues Modul hinzu (Einfügen > Modul).
  3. Füge den folgenden Code ein:

    Sub Umbruch()
       Dim s As String
       Dim i As Integer, j As Integer
       Dim ZeichenProZeile As Integer
       ZeichenProZeile = 50 ' Anzahl der Zeichen pro Zeile
       s = Sheets(1).Cells(1, 1).Value ' Text aus Zelle A1
    
       For i = ZeichenProZeile To Len(s) Step ZeichenProZeile
           j = InStr(i, s, " ")
           If j > 0 Then
               s = Mid(s, 1, j) & "<br>" & Mid(s, j + 1, Len(s)) ' "<br>" einfügen
           End If
           i = j
       Next i
    
       Sheets(1).Cells(2, 1).Value = s ' Ergebnis in Zelle A2
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe die Prozedur aus, indem du ALT + F8 drückst, die Prozedur auswählst und auf „Ausführen“ klickst.


Häufige Fehler und Lösungen

  • Fehler: "Typ-Fehler"

    • Lösung: Stelle sicher, dass die Zelle, aus der der Text gelesen wird, tatsächlich einen Textwert enthält.
  • Fehler: "
    " wird nicht korrekt angezeigt

    • Lösung: Überprüfe, ob du den HTML-Text korrekt in der E-Mail verwendest. Der <br>-Tag sollte im HTML-Body der E-Mail korrekt umgesetzt werden.

Alternative Methoden

  1. Verwendung von Textfunktionen in Excel:

    • Du kannst die TEXT()-Funktion in Kombination mit LINKS(), RECHTS() und TEIL() verwenden, um einen ähnlichen Effekt zu erzielen, jedoch ist dies nicht so flexibel wie VBA.
  2. Einfügen von Zeilenumbrüchen manuell:

    • Wenn du nur gelegentlich einen Zeilenumbruch benötigst, kannst du ALT + ENTER verwenden, um einen manuellen Umbruch in einer Zelle zu erstellen.

Praktische Beispiele

Hier ist ein praktisches Beispiel, das du verwenden kannst:

Sub BeispielUmbruch()
    Dim Text As String
    Text = "Dies ist ein Beispieltext, der in mehrere Zeilen umgebrochen werden soll, um die Lesbarkeit zu verbessern."

    Dim ZeilenText As String
    ZeilenText = UmbruchText(Text, 30) ' 30 Zeichen pro Zeile

    MsgBox ZeilenText ' Zeigt den umgebrochenen Text in einem MessageBox an
End Sub

Function UmbruchText(ByVal s As String, ByVal ZeichenProZeile As Integer) As String
    Dim i As Integer, j As Integer
    For i = ZeichenProZeile To Len(s) Step ZeichenProZeile
        j = InStrRev(s, " ", i) ' Suche nach dem letzten Leerzeichen
        If j > 0 Then
            s = Left(s, j) & "<br>" & Mid(s, j + 1)
        End If
    Next i
    UmbruchText = s
End Function

Tipps für Profis

  • Experimentiere mit der Zeichenanzahl: Du kannst die Anzahl der Zeichen pro Zeile anpassen, um das Layout deiner E-Mails zu optimieren.
  • HTML-Zeilenumbrüche im E-Mail-Body: Stelle sicher, dass du die E-Mails im HTML-Format sendest, um die <br>-Tags korrekt darzustellen.
  • Verwende Funktionen zur Fehlerbehandlung: Integriere On Error Resume Next, um potenzielle Laufzeitfehler zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um den Text in mehreren Zellen zu verarbeiten?
Du kannst eine Schleife verwenden, um durch alle relevanten Zellen zu iterieren und die Umbruchlogik auf jede Zelle anzuwenden.

2. Funktioniert dieser Code in Excel Online?
Leider unterstützt Excel Online kein VBA. Du musst die Desktop-Version verwenden, um den Code auszuführen.

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