802 Aufrufe
Gefragt in Tabellenkalkulation von lefty04 Mitglied (183 Punkte)
Hallo,

ich habe ein kleines Makro aufgezeichnet, dass einen Filter in einer Tabelle setzt und die gefilterten Daten dann in eine andere Tabelle einfügt.

Nur habe ich nun das Problem das, wenn die Auswahl leer ist, VBA nicht die Kopierten Zeilen einfügen kann.

Wie sage ich dem Makro, das es, wenn die Auswahl "keine"Daten enthält, es auch nicht den Befehl Kopieren und Einfügen ausführen muss???

Hier das Makro:

ActiveSheet.Range("$A$18:$L$320").AutoFilter Field:=12, Criteria1:="1"
ActiveSheet.Range("$A$18:$L$320").AutoFilter Field:=3, Criteria1:="6"
ActiveSheet.Range("$A$18:$L$320").AutoFilter Field:=2, Criteria1:="5"
Range("A19").Select
Range(Selection, Selection.End(xlToRight)).Select
Range("A19:K19").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Richtung1").Select
Range("F686").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A2").Select
Sheets("Basis").Select
ActiveSheet.Range("$A$18:$L$320").AutoFilter Field:=2
ActiveSheet.Range("$A$18:$L$320").AutoFilter Field:=3
ActiveSheet.Range("$A$18:$L$320").AutoFilter Field:=12
Range("E13").Select

1 Antwort

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Lefty,

ich habe mal den ersten Teil deines aufgezeichneten Makros etwas vereinfacht und die gewünschte Prüfung eingebaut:

Sub lefty()
Dim gefilterte, Zeile As Long

With ActiveSheet.Range("$A$18:$L$320")
.AutoFilter Field:=12, Criteria1:="1"
.AutoFilter Field:=3, Criteria1:="6"
.AutoFilter Field:=2, Criteria1:="5"
End With

For Zeile = 19 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
If ActiveSheet.Cells(Zeile, 1).Rows.Hidden = False Then gefilterte = gefilterte + 1
Next Zeile

If gefilterte > 0 Then
Range("A19:K" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row).Copy Destination:=Worksheets("Richtung1").Range("F686")
Else
MsgBox "Keine Zeilen zum Kopieren vorhanden", vbOKOnly + vbInformation, "Gefilterte Zeilen kopieren"
End If

'gefilterte auf Null setzen, falls danach weitere Sätze entsprechend dem Beispiel kopiert werden sollen
gefilterte = 0

End Sub


Gruß

M.O.
...