VBA kann Zeilen kopieren wenn Bedingungen erfüllt sind. Dies lässt sich durch eine simple Schleife bewerkstelligen. In diesem Beispiel sollen die Zeilen ab der 5 Zeile kopiert werden, wenn die Zelle in der Spalte D nicht leer ist. Die Zeilen werden dann aus der Tabelle 1 in die Tabelle 5 kopiert.
Private Sub cmdSchleife_Click()
'Variablendeklaration
Dim lngRow As Long
Dim lngRowL As Long
Dim lngRowT As Long
'Zeilenzähler definieren
lngRowL = Tabelle1.Cells(Tabelle1.Rows.Count, "B").End(xlUp).Row
lngRowT = 4
'vorherige Werte löschen
ActiveSheet.Range("B5:B9999").Clear
'Liste unter Bedingung kopieren
For lngRow = 5 To lngRowL
If Not IsEmpty(Tabelle1.Cells(lngRow, "D")) Then
lngRowT = lngRowT + 1
Tabelle5.Rows(lngRowT).Value = Tabelle1.Rows(lngRow).Value
End If
Next lngRow
End Sub
Sollen nur die Werte einer Spalte ausgegeben werden kann mit dem Befehl Cells gearbeitet werden.
Private Sub cmdSchleife_Click()
'Variablendeklaration
Dim lngRow As Long
Dim lngRowL As Long
Dim lngRowT As Long
'Zeilenzähler definieren
lngRowL = Tabelle1.Cells(Tabelle1.Rows.Count, "B").End(xlUp).Row
lngRowT = 4
'vorherige Werte löschen
ActiveSheet.Range("B5:B9999").Clear
'Liste unter Bedingung kopieren
For lngRow = 5 To lngRowL
If Not IsEmpty(Tabelle1.Cells(lngRow, "D")) Then
lngRowT = lngRowT + 1
Tabelle5.Cells(lngRowT, "B").Value = Tabelle1.Cells(lngRow, "B").Value
End If
Next lngRow
End Sub