Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1144to1148
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
Autofilter mit Variable
Hans
Ich möchte gerne einen Autofilter setzten lassen. Und zwar per Formular und Checkboxen. Das heißt ich habe ein Formular auf dem pro Spalte meines Excels die möglichen Werte in einer Checkbox auswählen kann.
Also z.b. 3 Spalten
1 Spalte Länder (USA, Deutschland, Frankreich)
2 Spalte Automarke (BMW, VW etc.)
Dann soll man auf dem Formula per Checkbos auswählen können nur USA & VW.
Ich habe versucht es zu programmieren, aber scheitere an der Variablen für den Autofilter.
Ich habe beides versucht, sowohl per Array, als auch durch einen String der alle Filterwerte enthält.
Hoffentlich kann mir einer helfen.
Danke Euch.
Also hier mein Versuch für die Länder.
Private Sub CommandButton1_Click()
Dim OGFilterArray As String
Dim iLoop As Integer
Anzahl = 0
If cbox1 = True Then
Anzahl = Anzahl + 1
If cbox1 = True Then LandFilterArray = """Holland"""
Landfilterall = LandFilterArray
ReDim my_array(Anzahl)
my_array(Anzahl) = "Holland"
End If
If cbox2 = True Then
Anzahl = Anzahl + 1
If Anzahl > 0 Then LandFilterArray = " ,"
Landfilterall = Lanfilterall + LandFilterArray
If cbogcht = True Then LandFilterArray = """Spanien"""
Landfilterall = Landfilterall + LandFilterArray
ReDim my_array(Anzahl)
my_array(Anzahl) = "Spanien"
End If
If cbox3 = True Then
Anzahl = Anzahl + 1
If Anzahl > 0 Then LandFilterArray = " ,"
Landfilterall = Lanfilterall + LandFilterArray
If cbogcht = True Then LandFilterArray = """Russland"""
Landfilterall = Landfilterall + LandFilterArray
ReDim my_array(Anzahl)
my_array(Anzahl) = "Russland"
End If
ActiveSheet.Range("$A$4:$AP$3009").AutoFilter Field:=5, Criteria1:=my_array
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Autofilter mit Variable
11.03.2010 23:09:31
fcs
Hallo Hans,
für Multiselektion von Einzelwerten im Autofilter unter Excel 2007 muss auch der Parameter "Operator" übergeben werden.
ActiveSheet.Range("$A$4:$AP$3009").AutoFilter Field:=5, Criteria1:=my_array, _
Operator:=xlFilterValues
Für die Syntax einer VBA-Anwesiunghilft es oft, eine Aufzeichnung per Makrorekorder durchzuführen.
Generell würde ich dir empfehlen, im Userform jeweils Listboxen mit Multiselektion für Land, Automarke, etc. zu verwenden, statt vieler einzelner Checkboxen für jede Kategorie. Das läßt sich in den VBA-Prozeduren wesentlich einfacher verarbeiten, indem man die selektierten Items der Listboxen in einer For-Next-Schleife abfragt und den ArrayVariablen für den Autofilter zuweist.
Gruß
Franz
Anzeige
AW: Autofilter mit Variable
11.03.2010 23:57:50
Hans
Danke für die Antwort, aber das löst mein Problem nicht ganz.
Wenn ich die 2 Werte per Checkbox auswähle, dann habe ich trotzdem nur einen Wert ausgewählt. Also wenn ich Deutschland und USA auswähle, nimmt er immer nur den letzten Wert.
Wenn ich den Array hart angebe, nimmt er beide Werte.
Ist meine Array Deklaration flasch?
AW: Autofilter mit Variable
12.03.2010 00:08:07
fcs
Hallo Hans.
deklariere die Variable auch als Feld zu Beginn der Prozedur.
Dim my_Array()
Es ist immer sinnvoll mit der Option Explicit (1. Code-Zeile im Modul) und Dim Anweisungen für alle Variablen zu arbeiten. Dann vermeidet man doch den einen oder anderen Syntax-Fehler.
Du hast vergessen in allen ReDim-Anweisungen das Preserve einzufügen, damit beim erneuten dimensionieren des Arrays die bereits vorhandenen Werte nicht gelöscht werden.
ReDim Preserve my_array(1 to Anzahl)
Gruß
Franz
Anzeige
AW: Autofilter mit Variable
12.03.2010 09:03:56
Hans
Super Danke, jetzt gehts.
VG
Hans
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige