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

Schreibe einen Kommentar