Hallo Diane,
über die Zeilen- und Spalten-Variablen kannst Du den zu bearbeitenden Bereich festlegen. Unabhängig davon kannst Du außerdem die Spalte mit Deinem Kontrollwert festlegen.
Sub ZeilenAuffuellen()
'Das Makro geht davon aus, dass die erste Zeile im zu prüfenden Bereich gefüllt ist
'Das Makro arbeitet immer auf der Tabelle, die beim Start des Makros aktiv ist
Dim ersteSpalte As Integer
Dim letzteSpalte As Integer
Dim kontrollSpalte As Integer
Dim aktuelleSpalte As Integer
Dim ersteZeile As Long
Dim letzteZeile As Long
Dim aktuellePruefZeile As Long
Dim aktuelleKopierZeile As Long
Dim zeilenInhalt As String
ersteSpalte = 1 'von Spalte A
letzteSpalte = 15 'bis Spalte O
kontrollSpalte = 16 'Spalte P
ersteZeile = 2 'Falls der zu bearbeitende Bereich weiter unten beginnt, hier eintragen
letzteZeile = ActiveSheet.Cells(Rows.Count, kontrollSpalte).End(xlUp).Row 'Letzte Zeile in Spalte P
For aktuellePruefZeile = ersteZeile To letzteZeile
For aktuelleSpalte = ersteSpalte To letzteSpalte
zeilenInhalt = zeilenInhalt & Cells(aktuellePruefZeile, aktuelleSpalte)
Next aktuelleSpalte
If Len(zeilenInhalt) = 0 Then
'Letzte gefüllte Zeile in aktuelle Zeile kopieren
Range(Cells(aktuelleKopierZeile, ersteSpalte), Cells(aktuelleKopierZeile, letzteSpalte)).Copy
Range(Cells(aktuellePruefZeile, ersteSpalte), Cells(aktuellePruefZeile, letzteSpalte)).PasteSpecial xlPasteAll
Application.CutCopyMode = False
Else
'Aktuell geprüfte Zeile als Zeile zum kopieren setzen
aktuelleKopierZeile = aktuellePruefZeile
End If
'Kontrollstring zurücksetzen
zeilenInhalt = ""
Next aktuellePruefZeile
End Sub
Viele Grüße,
Zwenn
|