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

Schreibe einen Kommentar

5 + 9 =