Mehrzeiler in 1 Zelle → aufteilen

Mehrzeiler in 1 Zelle → auf mehrere Zellen
(Zeilen) aufteilen

Mit AltEingabe können bekanntlich in einer Zelle mehrere Zeilen dargestellt werden. Wenn Sie diese Zelle so aufteilen wollen, dass in untereinander liegenden Zellen jeweils eine Zeile der ursprünglichen Zelle ausgegeben wird, dann bietet sich ein kleines Makro an. Sie positionieren den Cursor auf die zu splittende Zelle und rufen beispielsweise über AltF8 das Makro MehrZeiler auf. Die VBA-Prozedur prüft, ob überhaupt mehrere Zeilen in der Ausgangszelle sind und falls das so ist, wird auch noch eine Prüfung vorgenommen, ob auch genügend freie Zellen unterhalb vorhanden sind. Sind beide Bedingungen erfüllt, dann wird ab der ersten Zelle jede einzelne Zeile in die jeweilige Zelle geschrieben. Der alte Inhalt der mehrzeiligen Zelle ist dort verloren.

Hier nun der Code, welchen Sie hier als *.zip hier herunterladen können. Die gepackte Datei enthält eine *.txt und eine *.cls.

Option Explicit 

Sub MehrZeiler()
'Mehrere Zeilen in 1 Zelle -> mehrere Zellen
   Dim aZelle As Variant, Anz As Integer
   Dim rngFirstFree As Range, rng2Check As Range, c As Range
   Dim rng2Fill As Range
   Dim Abbruch As Boolean

   aZelle = Split(ActiveCell.Value, Chr(10))
   Anz = UBound(aZelle) + 1
   If Anz > 1 Then
      'Mindestens 2 Zeilen 'Prüfung, ob Zeilen darunter frei sind
      With ActiveCell
         Set rngFirstFree = Cells(.Row + 1, .Column)
      End With
      
      Set rng2Check = Range(rngFirstFree, rngFirstFree.Resize(Anz - 1))
      For Each c In rng2Check
         If Not IsEmpty(c) Then
            MsgBox "Der Zielbereich ist nicht (komplett) leer!", _
             vbOKOnly + vbExclamation, "Abbruch ..."
            Abbruch = True
            Exit For
         End If
      Next c
      
      'Nur wenn genügend freien Zeilen vorhanden sind
      If Not Abbruch Then
         Range(ActiveCell, ActiveCell.Resize(Anz)) = _
          WorksheetFunction.Transpose(aZelle)
      End If
   End If
End Sub

Wie fast immer in unseren Musterlösungen und Code-Schnipseln gilt die Regel, dass Übersichtlichkeit, Transparenz und Verständlichkeit des Codes Vorrang vor einigen zehntel Sekunden Geschwindigkeitsgewinn hat.

Falls Sie den Code per Hand in ein Modul Ihres WorkBooks einfügen, dann empfiehlt sich jenes Arbeitsblatt als Speicherort zu verwenden, wo der Code auch laufen soll. Alternativ geht auch DieseArbeitsmappe als Speicherort. Die *.cls-Datei ist so ausgelegt, dass der Code in die Mappe mit dem Namen Tabelle1 eingefügt wird. – Sollen Zellen mit Inhalten mit oder ohne ohne Nachfrage überschrieben werden, dann ändern Sie den Code entsprechend ab oder senden Sie uns eine entsprechende Mail, damit wir (bzw. unser Sponsor) den Code anpassen.

Bitte beachten Sie die Hinweise bezüglich des Copyrights im Kopfbereich der gespeicherten Dateien. Danke.

[NachObenLetzte Verweis=”CS: Mehrzeiler in 1 Zelle”]
Dieser Beitrag wurde unter Code-Schnipsel, Musterlösungen, Tabelle und Zelle veröffentlicht. Setze ein Lesezeichen auf den Permalink.