VBA-Autofilter Mit Mehreren Kriterien, Mit Variablen
EDIT: um das Problem Zu lösen, wechselte ich Dim Placed As Range
zu As Long
. Ich änderte dann die
Set Placed = Rows("3:3").Find("Placed", Range("A3"), searchdirection:=xlToRight)
zu
Placed = Rows("3:3").Find("Placed", Range("A3"), searchdirection:=xlToRight).Column
Der code funktioniert jetzt.
ENDE BEARBEITEN
Ok, ich habe die Arbeit an diesem Thema für fast zwei Stunden jetzt.
Ich versuche code ein paar Optionsfelder auf einem Arbeitsblatt, die Daten zu filtern, wie gebraucht.
Beginnen, ich nahm mir selbst das filtern der Daten, um mir einen Ausgangspunkt. Dies ist, was der recorder ausspucken:
ActiveSheet.Range("$A$3:$CS$212").AutoFilter Field:=53, Criteria1:=Array( _
"Iteration 1", "Iteration 2", "Iteration 3", "Tradeshow", "="), Operator:= _
xlFilterValues
Um die option Tasten robuster, entschied ich mich zur Verwendung von Variablen nur für den Fall, Spalten oder Zeilen Hinzugefügt wurden, oder wenn Kriterien Hinzugefügt wurden.
Ich habe eine variable für die Range()
, Field:=
, und Criteria1:=
, aber mein code löst diesen Fehler jetzt: Run-time error '1004': Autofilter Method of Range class failed
.
Frage ich mich, wenn ich mit der Array
falsch...? Wie auch immer, hier sind meine Erklärungen:
Const Opt1 As String = "Iteration 1"
Const Opt2 As String = "Iteration 2"
Const Opt3 As String = "Iteration 3"
Const Opt4 As String = "Iteration 4"
Const Opt5 As String = "Tradeshow"
Const Opt6 As String = "Placed"
Dim Placed As Range 'This is the Field var.
Dim lastRow, lastColumn As Long 'Holds the last row and column numbers.
Dim Rng1, Rng2 As Range 'These hold the beginning and ending ranges for the filter
Und hier ist, wie ich meine Variablen gesetzt:
lastRow = Range("A:A").Find("*", Range("A1"), searchdirection:=xlPrevious).Row
lastColumn = Cells(3, Columns.Count).End(xlToLeft).Column
Set Placed = Rows("3:3").Find("Placed", Range("A3"), searchdirection:=xlToRight)
Set Rng1 = Cells(3, 1)
Set Rng2 = Cells(lastRow, lastColumn)
Schließlich, hier ist der AutoFilter
code:
ActiveSheet.Range(Rng1, Rng2).AutoFilter Field:=Placed, Criteria1:=Array(Opt1, Opt2, Opt3, Opt4, Opt5, Opt6, "="), Operator:=xlFilterValues
Erkennt jemand, warum könnte es sein, werfen, dass die Fehler? Hat es etwas zu tun mit der Array
? Jede Hilfe wird sehr geschätzt!
InformationsquelleAutor ARich | 2013-08-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, es ist ein Problem mit dem Field:= parameter. Sie haben Sie Gelegt, und Sie haben die Zuordnung der Gelegt variable in eine Zelle. Es muss eine Spalte Anzahl. Zum Beispiel, wenn das Platzierte Spalte ist die Spalte D und deine Daten beginnen in Spalte A, das Feld sollte 4 sein, weil es ist die vierte Spalte. Wenn das platzierte Spalte ist die Letzte Spalte, konnten Sie gleich Ihre lastColumn variable:
Sie sind sehr willkommen 🙂 Manchmal, wenn wir unseren Blick auf die Dinge zu lange, die offensichtliche Zeug rutscht direkt an uns vorbei.
InformationsquelleAutor tigeravatar