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

Forumthread: Automatisch Zeilen einfügen und Text reinschreiben

Automatisch Zeilen einfügen und Text reinschreiben
02.09.2008 20:54:00
oblivion
Hallo,
hab folgendes Problem.
Ich habe ein Tabelle mit 4 Spalten. Wegen dem automatischen Zeilenumbruch habe ich keine vebundenen Zeilen.
In Excel ist die Zeilenhöhe ja auf 409 begrenzt. Ich habe aber teilweise Text der größere Spalten bräuchte.
Wenn ich die Spalte größer machen würde, dann kommt die ganze Seitenformatierung durcheinander.
Kann man mit Hilfe eines VBAs prüfen lassen, wenn die Maximale Zeilenhöhe erreicht ist, und der Text aber noch weiter geht, das dann eine Zweite Zeile angelegt wird und der Text dann dort automatisch weitergeschrieben wird.
Also zum Beispiel der lange Text steht in Spalte C4 und wenn diese Zelle die Maximale Höhe erreicht hat, dann wird automatisch eine neue Zeile eingefügt (wäre dann C5) und der überhängende Text wird dann dort automatisch reingeschrieben. Aber der Text der vorher in C5 stand müsste dann in C6 stehen.
Ist dies überhaupt machbar?
Danke für die Hilfe.
Gruß Oblivion
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatisch Zeilen einfügen und Text reinschreiben
03.09.2008 12:32:00
fcs
Hallo Oblivion,
automatisch den überschüssigen Text übertragen ist schwierig, da dies eine komplexe Textanalyse erfordert.
Man kann nach der Eingabe ggf. etwas einfacher den Text halbieren und auf zwei Zeilen verteilen.
Nachfolgendes Makro im VBA-Editor unter entsprechenden Tabelle einfügen.
Gruß
Franz

Private Sub Worksheet_Change(ByVal Target As Range)
'Zeilenhöhe in Spalte 3 ab Zeile 2 nach Eingabe prüfen ggf. Leerzeile einfügen
Dim Laenge As Long
If Target.Column = 3 And Target.Row > 1 Then
If Me.Rows(Target.Row).RowHeight > 390 Then
'Leerzeile einfügen
Me.Rows(Target.Row + 1).Insert
'halbe Länge des Textes ermitteln
Laenge = Int(Len(Target.Value) / 2)
'Position des nächsten Leerzeichens ermiteln
Do Until Mid(Target.Value, Laenge, 1) = " "
Laenge = Laenge + 1
Loop
'2. Texthälfte in Folgezeile eintragen
Target.Offset(1, 0).Value = Mid(Target.Value, Laenge + 1)
'1. Texthälfte in Zelle eintragen
Target.Value = Left(Target.Value, Laenge)
MsgBox "Zelle " & Target.Address & " enthielt zu viel Text." & vbLf _
& "Text wurde teilweise in nächste Zeile übertragen!"
End If
End If
End Sub


Anzeige
AW: Automatisch Zeilen einfügen und Text reinschreiben
03.09.2008 17:51:28
oblivion
Hallo, klappt super. Vielen Dank.
Hab aber noch zwei kleine Fragen.
Ich habe es auspribiert und da ist mir aufgefallen, das in einer Zelle vor dem Text eine Leerzeile stand. Bei den anderen Zellen war das nicht so.
Kann man das irgendwir im VBA einbauen, das es nicht dazu kommt. Ich konnte diese Leerzeile auch nicht löschen, als ich die Zelle angeklickt hatte und entfernen gedrückt habe.
Und meine zweite Frage wäre, wie ich den Code anpassen muss, wenn ich nicht nur in der 3 Spalte die Zeilen überprüfen und anpassen lassen möchte sondern auch die anderen Spalten.
Wenn ich die erste Zelle mit Rahmen formatiere dann kommt in der nächsten kein Rahmen mehr. Kann man da irgendwas machen?
Meine andere Idee wäre ich mache eine Tabelle mit zwei Zeilen und meinetwegen 4 Spalten. Zwischen den zwei Zeilen lege ich vielleicht 20 versteckte Zeilen an. Kann man das per VBA steuern, dass immer nur die erste Zeile wieder auftaucht und dann dort der Text weitergeschrieben wird?
Ich bastel mal schnell eine Beispieldatei. Ich habe es mal eben mit den versteckten Zeilen probiert. Es klappt nicht dass diese benutzt werden. Aber ich habe das Problem mit der Formatierung des Rahmens gelöst.
https://www.herber.de/bbs/user/55169.xls
Kann man diese Zeilen, wenn ich es für sagen wir mal vier oder fünf Spalten benutze auch die Zeilen wieder löschen, wenn nichts in einer anderen Spalte und in dieser Zeile steht.
Und ich glaube es gibt auch Probleme, wenn man in einer Spalte den Text löscht und in einer anderen steht noch Text und man schreibt wieder was neues rein, dann wird ja wieder was eingefügt und bringt den Text in einer anderen Spalte durcheinader.
Danke schon mal für deine Hilfe.
Gruß Oblivion
Anzeige
AW: Automatisch Zeilen einfügen und Text reinschreiben
04.09.2008 09:56:39
fcs
Hallo Oblivion,
ich hab noch mal etwas gebastelt und in deine Beispieldatei eingebaut.
https://www.herber.de/bbs/user/55183.xls
Das sollte die meisten Probleme bereinigen.
Das mit der Leerzeile in einer Zelle ist möglicherweise ein Formatierungsproblem. Die Zellen müssen mit vertikaler Ausrichtung "oben" formatiert sein.
Die Rahmenformatierung hab ich teilweise per bedingter Formatierung gemacht, so dass in einer Überschriftenzeile (Zelle in Spalte A ist ausgefüllt) immer ein Rahmen oben angezeigt wird, die letzte Zeile mit Daten erhält einen Rahmen unten.
Die Idee mit den ausgeblendeten Zeilen solltest du schnell vergessen. Das ist kompliziert zu verwalten.
Werden die Daten in einer Zeile alle gelöscht, dann wird diese Zeile automatisch gelöscht.
Das Problem mit der Eingabe in verschieden Spalten hab ich auch gelöst. Das Makro prüft ob in der Folgezeile schon geteilte Texte stehen. Damit dies funktioniert muss immer erst die Überschrift in Spalte A eingetragen werden, danach dann die Texte, die ggf. auf mehrere Zeilen verteilt werden müssen.
Gruß
Franz
Anzeige
AW: Automatisch Zeilen einfügen und Text reinschreiben
04.09.2008 17:53:00
oblivion
Hallo, danke für deine Hilfe und deine Mühen. Mit bedingter Formatierung hätte ich auch drauf kommen können. Hab ja schon selber damit gearbeitet. Ich werde die Beispieldatei jetzt mal auf meine richtige Datei übertragen. Mal sehen ob soweit alles klappt.
Gruß Oblivion

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Automatisch Zeilen einfügen und Text reinschreiben in Excel


Schritt-für-Schritt-Anleitung

Um in Excel automatisch Zeilen einzufügen und Text in die nächste Zeile weiterschreiben zu lassen, kannst du ein VBA-Makro verwenden. Folge diesen Schritten:

  1. VBA-Editor öffnen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Neues Modul einfügen:

    • Klicke mit der rechten Maustaste auf den gewünschten Arbeitsblattnamen im Projektfenster.
    • Wähle Einfügen > Modul.
  3. Makro einfügen:

    • Kopiere den folgenden VBA-Code und füge ihn in das Modul ein:
    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim Laenge As Long
       If Target.Column = 3 And Target.Row > 1 Then
           If Me.Rows(Target.Row).RowHeight > 390 Then
               Me.Rows(Target.Row + 1).Insert
               Laenge = Int(Len(Target.Value) / 2)
               Do Until Mid(Target.Value, Laenge, 1) = " "
                   Laenge = Laenge + 1
               Loop
               Target.Offset(1, 0).Value = Mid(Target.Value, Laenge + 1)
               Target.Value = Left(Target.Value, Laenge)
               MsgBox "Zelle " & Target.Address & " enthielt zu viel Text." & vbLf & "Text wurde teilweise in nächste Zeile übertragen!"
           End If
       End If
    End Sub
  4. Makro testen:

    • Gehe zurück zu deiner Excel-Tabelle und gebe in die Zelle C4 einen langen Text ein. Wenn die Zeilenhöhe über 409 (maximal) steigt, sollte das Makro eine neue Zeile einfügen.

Häufige Fehler und Lösungen

  • Leerzeile vor dem Text:

    • Stelle sicher, dass die Zellen mit der vertikalen Ausrichtung "oben" formatiert sind. Dies kann helfen, unerwünschte Leerzeilen zu vermeiden.
  • Rahmenformatierung:

    • Wenn die Rahmenformatierung nicht übernommen wird, kannst du die bedingte Formatierung verwenden, um den Rahmen in bestimmten Zellen anzuzeigen.
  • Probleme mit mehreren Spalten:

    • Wenn du das Makro für andere Spalten anpassen möchtest, musst du die Bedingung im VBA-Code entsprechend erweitern, um auch andere Spalten zu überprüfen.

Alternative Methoden

Eine alternative Methode wäre die Verwendung von Excel-Formeln oder Tabellen mit versteckten Zeilen. Allerdings kann dies kompliziert sein und die Übersichtlichkeit beeinträchtigen.

Eine einfachere Möglichkeit ist es, Bedingte Formatierung zu verwenden, um den Text in einer Zelle zu formatieren, ohne dass du manuell Zeilen einfügen musst.


Praktische Beispiele

  1. Text in Zeilen aufteilen:

    • Wenn du einen langen Text in C4 eingibst und die Zeilenhöhe über 409 liegt, wird der Text automatisch in die nächste Zeile (C5) aufgeteilt.
  2. Automatisches Einfügen:

    • Das Makro prüft, ob in den nachfolgenden Zeilen bereits Text steht. Wenn ja, wird der neue Text entsprechend weitergeschrieben.

Tipps für Profis

  • Verwende VBA, um die Zeilenhöhe dynamisch zu prüfen: Du kannst den Code so anpassen, dass er auch in anderen Spalten funktioniert, indem du die If-Bedingungen erweiterst.

  • Bedingte Formatierung optimal nutzen: Verwende die bedingte Formatierung, um dein Layout zu verbessern, ohne die ganze Zeit mit VBA arbeiten zu müssen.


FAQ: Häufige Fragen

1. Kann ich das Makro auch für andere Spalten verwenden?
Ja, passe die Bedingungen im VBA-Code an, um die gewünschten Spalten zu überprüfen.

2. Was tun, wenn das Makro nicht funktioniert?
Überprüfe, ob der VBA-Code korrekt eingegeben wurde und die Arbeitsblatt-Ereignisse aktiviert sind.

3. Gibt es eine Möglichkeit, die Zeilenhöhe über 409 zu erhöhen?
Das ist nicht möglich, da Excel eine maximale Zeilenhöhe von 409 hat. Du kannst jedoch den Text in mehreren Zeilen anordnen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige