Mehrzeiler in 1 Zelle → aufteilen

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

Mit AltEingabe kön­nen bekan­ntlich in ein­er Zelle mehrere Zeilen dargestellt wer­den. Wenn Sie diese Zelle so aufteilen wollen, dass in untere­inan­der liegen­den Zellen jew­eils eine Zeile der ursprünglichen Zelle aus­gegeben wird, dann bietet sich ein kleines Makro an. Sie posi­tion­ieren den Cur­sor auf die zu split­tende Zelle und rufen beispiel­sweise über AltF8 das Makro MehrZeil­er auf. Die VBA-Proze­dur prüft, ob über­haupt mehrere Zeilen in der Aus­gangszelle sind und falls das so ist, wird auch noch eine Prü­fung vorgenom­men, ob auch genü­gend freie Zellen unter­halb vorhan­den sind. Sind bei­de Bedin­gun­gen erfüllt, dann wird ab der ersten Zelle jede einzelne Zeile in die jew­eilige Zelle geschrieben. Der alte Inhalt der mehrzeili­gen Zelle ist dort ver­loren.

Hier nun der Code, welchen Sie hier als *.zip hier herun­ter­laden kön­nen. Die gepack­te 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 Muster­lö­sun­gen und Code-Schnipseln gilt die Regel, dass Über­sichtlichkeit, Trans­parenz und Ver­ständlichkeit des Codes Vor­rang vor eini­gen zehn­tel Sekun­den Geschwindigkeits­gewinn hat.

Falls Sie den Code per Hand in ein Mod­ul Ihres Work­Books ein­fü­gen, dann emp­fiehlt sich jenes Arbeits­blatt als Spe­icherort zu ver­wen­den, wo der Code auch laufen soll. Alter­na­tiv geht auch DieseAr­beitsmappe als Spe­icherort. Die *.cls-Datei ist so aus­gelegt, dass der Code in die Mappe mit dem Namen Tabelle1 einge­fügt wird. – Sollen Zellen mit Inhal­ten mit oder ohne ohne Nach­frage über­schrieben wer­den, dann ändern Sie den Code entsprechend ab oder senden Sie uns eine entsprechende Mail, damit wir (bzw. unser Spon­sor) den Code anpassen.

Bitte beacht­en Sie die Hin­weise bezüglich des Copy­rights im Kopf­bere­ich der gespe­icherten Dateien. Danke.

[NachOben­Let­zte Verweis=„CS: Mehrzeil­er in 1 Zelle”]
Dieser Beitrag wurde unter Code-Schnipsel, Musterlösungen, Tabelle und Zelle veröffentlicht. Setze ein Lesezeichen auf den Permalink.