Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1632to1636
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

wenn Autofilter kein Ergebnis dann weiter

wenn Autofilter kein Ergebnis dann weiter
20.07.2018 10:52:11
Günter
Hallo,
ich habe in einem Makro einen Autofilter eingebaut und kopiere die gefilterten Daten in ein anderes Tabellenblatt. Bisher alles gut. Nur habe ich jetzt das Problem, dass der Autofilter kein Ergebnis liefert, was auch okay ist.
Die weitere Verarbeitung läuft auf Fehler. (Makro bricht ab).
In dem Fall soll aber die folgende Verarbeitung nicht ausgeführt werden.
Anbei ein Auszug aus dem Quellcode:
Quellcode-Beginn
'P2S BASIS
Sheets("Systemdaten_PVS").Select
Range("A1:f" & Cells(Rows.Count, 1).End(xlUp).Row).AutoFilter Field:=1, Criteria1:="SAP_BASIS"
Range("A1:f" & Cells(Rows.Count, 1).End(xlUp).Row).AutoFilter Field:=6, Criteria1:="P2S-500"
ActiveSheet.Range("c2:c" & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlCellTypeVisible).Copy
Sheets("Systemarbeiten").Select
Range("c4").Select
ActiveSheet.Paste
Quellcode-Ende
In diesem Fall gibt es für das Kriterium "P2S-500" kein Ergebnis.
Es soll also der nachfolgende Quellcode nicht ausgeführt werden.
Gruß
Günter

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wenn Autofilter kein Ergebnis dann weiter
20.07.2018 11:00:59
UweD
Hallo
vor dem copy zählen...

If WorksheetFunction.Subtotal(3, Columns(1)) = 1 Then ' oder 1, wenn die Spalte keine Ü _
berschrift hat
MsgBox "Filterfehler"
Exit Sub
End If
benutzt das Teilergebnis Anzahl2()
LG UweD
AW: wenn Autofilter kein Ergebnis dann weiter
20.07.2018 11:15:40
Daniel
Hi
ob dein Autofilterergebnis leer ist oder nicht, kannst du nach Anwenden des Filters so prüfen:
if Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)).SpecialCells(xlcelltypevisible).Count > 1 Then
damit Zählst du die Anzahl der sichtbaren Zellen in der ersten Spalte. Da die Überschriftenzeile mit dabei ist und diese immer sichtbar ist, findet das .SpecialCells auf jeden Fall einen Wert und du bekommst keinen Fehlerabbruch, wenn der Autofilter nichts findet.
um vor anwenden des Filters zu prüfen, ob ein Ergebnis vorhanden ist, kann man ZählenWenns bzw Worksheetfunction.CountIfs verwenden.
Hier mal der Code dafür mit ein paar weiteren Optimierungen:
With Sheets("Systemdaten_PVS").Select
With .Range("A1:f" & .Cells(.Rows.Count, 1).End(xlUp).Row)
If Worksheetfunction.CountIfs(.columns(1), "SAP_BASIS", .Columns(6), "P2S-500") then     _
.AutoFilter Field:=1, Criteria1:="SAP_BASIS"
.AutoFilter Field:=6, Criteria1:="P2S-500"
.Columns(3).Offset(1, 0).SpecialCells(xlCellTypeVisible).Copy
Sheets("Systemarbeiten").Range("c4").PasteSpecial xlpasteAll
end if
end with
end with
am einfachsten wäre jedoch folgende Lösung:
kopiere einfach die erste Leerzeile unterhalb des Autofilters mit.
Diese ist immer sichtbar, damit findet das .SpecialCells(xlcelltypevisible) auch dann eine Zeile, wenn alles andere ausgeblendet ist.
Da die Zeile leer ist, stört sie auch nicht weiter:
ActiveSheet.Range("c2:c" & ActiveSheet.UsedRange.Rows.Count + 1).SpecialCells(xlCellTypeVisible).Copy
Gruß Daniel
Anzeige
AW: wenn Autofilter kein Ergebnis dann weiter
20.07.2018 13:18:19
Günter
Hallo UweD,
Hallo Daniel,
vielen Dank für Eure schnellen Rückmeldungen.
Ich habe mich für die schnelle Lösung von Daniel entschieden, die mir sehr geholfen hat..
Die anderen Lösungen werde ich mir in Ruhe ansehen.
Viele Grüße
Günter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge