Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1764to1768
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

Laufzeitfehler bei Filterkriterium VBA

Laufzeitfehler bei Filterkriterium VBA
21.06.2020 20:09:13
Stefan
Hallo zuammen,
dank UweDs Hilfe funktioniert das Makro nach Kriterien zu filtern wunderbar.
Jedoch hat sich jetzt ein Laufzeitfehler 1004 eingeschlichen und ich weiß nicht wieso es ausgerechnet an Kriterium 16 scheitert.
Alle anderen Kriterien funtionieren einwandfrei und ich konnte durch rumprobieren das Kriterium 16 als Fehlerquelle identifizieren.
Kann es ein das sich Kriterium 16 & Kriterium13 gegenseitig im Wege sind ?
Eigentlich dürfte dies kein Probem sein, da es bei Kriterium13 & 16 nicht der gleiche Field ist beim filtern.
Wenn ich Kriterium 16 statt als "" mit z.B. "Text" deklariere, funktioniert es, nur nicht um leere Zellen auszufiltern.
Hier der VBA Code

Sub Filtern2()
Dim Kriterium1$, Kriterium2$, Kriterium3$, Kriterium4$, Kriterium5$, Kriterium6$, Kriterium7$,  _
Kriterium8$, Kriterium9$, Kriterium10$, Kriterium13$, Kriterium14$, Kriterium15$, Kriterium16$
With Sheets("Tabelle1")
If .AutoFilterMode Then .AutoFilterMode = False
'Filterbereich Inhalte bei V20:W39
Kriterium1 = .Cells(29, 22)
Kriterium2 = .Cells(39, 22)
Kriterium3 = .Cells(38, 22)
Kriterium4 = .Cells(37, 22)
Kriterium5 = .Cells(36, 22)
Kriterium6 = .Cells(35, 22)
Kriterium7 = .Cells(24, 22)
Kriterium8 = .Cells(25, 22)
Kriterium9 = .Cells(26, 22)
Kriterium10 = .Cells(27, 22)
Kriterium13 = "=" 'nur leere Zeilen anzeigen
Kriterium14 = .Cells(15, 22)
Kriterium15 = .Cells(16, 22)
Kriterium16 = "" 'leere Zeilen ausfiltern
.Range("$A$5:$M$5").AutoFilter Field:=6, _
Criteria1:=Array(Kriterium1, Kriterium2, Kriterium3, Kriterium4, Kriterium5,  _
Kriterium6, Kriterium7, Kriterium8, Kriterium9, Kriterium10), _
Operator:=xlFilterValues
.Range("$A$5:$M$5").AutoFilter Field:=9, _
Criteria1:=Array(Kriterium13, Kriterium14), _
Operator:=xlFilterValues
.Range("$A$5:$M$5").AutoFilter Field:=8, _
Criteria1:=Array(Kriterium15), _
Operator:=xlFilterValues
.Range("$A$5:$M$5").AutoFilter Field:=7, _
Criteria1:=Array(Kriterium13), _
Operator:=xlFilterValues
.Range("$A$5:$M$5").AutoFilter Field:=6, _
Criteria1:=Array(Kriterium16), _
Operator:=xlFilterValues
End With
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler bei Filterkriterium VBA
21.06.2020 20:18:14
Hajo_Zi
warum Array?
.Range("$A$5:$M$5").AutoFilter Field:=6, _
Criteria1:=Kriterium16, _

AW: Laufzeitfehler bei Filterkriterium VBA
22.06.2020 00:58:41
Stefan
Hallo Hajo;
Sorry, hatte vergessen zu erwähnen das das Kriterum16 in die erste Filterbedingung Field6 mit rein muss.
Grundsätzlich für sich alleine funktioniert das ja wie Du vorgegeben hattest.

.Range("$A$5:$M$5").AutoFilter Field:=6, _
Criteria1:=Kriterium16, _

Wenn ich allerdings wie oben eingetragen filtere bringt es mit die Filterung in Field 6 durcheinander bei der zweiten Abfrage Filtern Field 6.
Die Trennung des Kriteriums war nur zur Identifizierung des Laufzeitfehlers notwendig.
Das Kriterium16 sollte aber gleich direkt in der erste Field 6 Filterung sein und zwar so:

.Range("$A$5:$M$5").AutoFilter Field:=6, _
Criteria1:=Array(Kriterium1, Kriterium2, Kriterium3, Kriterium4, Kriterium5,  _
Kriterium6, Kriterium7, Kriterium8, Kriterium9, Kriterium10, Kriterium16), _
Operator:=xlFilterValues

Dieser Code verursacht allerdings den Laufzeitfehler 1004.
Ohne Kriterium16 funktioniert es, aber der muss aber da noch mit rein.

.Range("$A$5:$M$5").AutoFilter Field:=6, _
Criteria1:=Array(Kriterium1, Kriterium2, Kriterium3, Kriterium4, Kriterium5,  _
Kriterium6, Kriterium7, Kriterium8, Kriterium9, Kriterium10), _
Operator:=xlFilterValues

Und ich weiß nicht wieso er mit der Laufzeitfehler 1004 ausgibt und wie man dies Problem beheben kann.
Anzeige
AW: Laufzeitfehler bei Filterkriterium VBA
22.06.2020 08:28:43
Luschi
Hallo Stefan,
bei meinen Versuchen beißen sich die Einstellungen Kriterium16 mit dem Operator 'xlFilterValues'
und ist aus meiner Sicht auch verständlich. Denn festdefinierte Werte sind was anderes als 'alles Zellen die nicht leer sind.
Und dieses Kriterium16 ist für Feld6 auch nicht mehr erforderlich, denn durch die im Array definierten Festwerte fallen die Leerzellen raus und andere Werte als festgelegt werden ebenso rausgefiltert.
Da kannst Du dann nicht kommen und eben doch die anderen Werte auch anzeigen wollen, da nicht leer; das ist wie bei der Katze, die sich in den eigenen Schwanz beißt - es tut ihr beim 1. Mal weh und dann wird sie es wohl auch sein lassen.
Die Definition des ASutofilters mit: .Range("$A$5:$M$5").AutoFilter - also nur mit der Adreßangabe für die Filterüberschriften, ist mit persönlich viel zu heikel. Kommen unten neue Zellen hinzu, können Leerzellen die wirkliche Bereichsgröße des zu filternden Bereiches verfälschen.
Bill Jelen empfiehlt in seinen Buch 'Excel 2019 Vba-Proramming' sogar diese Variante:
Range("A1").AutoFilter Field:=4, Criteria1:= "Ford"
Das kann man sich aber nur leisten, wenn es im zu filternden Bereich, der ja hier dann von Excel automatisch bestimmt wird, KEINE Leerzellen gibt.
Den Autofilter benutze ich in meinen Projekten überhaupt nicht mehr und setze dafür die Tabellenformatvorlage 'Als Tabelle formatieren' ein.
Außer einen automatisch mitwachsenden Bereich hat sie auch den Vorteil, daß man mit Vba da wesentlich mehr Eigenschaften/Methoden hat.
Gruß von Luschi
aus klein-Paris
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige