Auslesen von Auto Filter und aktivieren von Checkboxen auf UserForm
#1
Hallo zusammen,

ich habe ein Tabellenblatt entworfen auf dem in Zeile 4 ein Auto Filter dauerhaft aktiviert ist.

Spalte A enthält bestimmte Produkte, die unterschiedliche Eigenschaften haben. Diese Eigenschaften werden ab der Spalte L (AutoFilter Feld 12), derzeit bis Spalte AC, einzeln gefiltert. In den Zellen steht jeweils eine 1 wenn das Produkt die Eigenschaft der Überschrift in Zeile 4 hat. Daher wird im Auto Filter immer nur der Wert 1 herausgefiltert. 

Um mir die Bedienung einfacher zu gestalten habe ich mir ein UserForm erstellt, auf dem derzeit 18 Checkboxen vorhanden sind. Mit deren Hilfe kann ich mit dem nachfolgenden Code jeweils die Filter aktivieren.

Code:
Private Sub CheckBox1_Click()
' Ansteuerung Checkbox 1
    If CheckBox1.Value = True Then
        ActiveSheet.Range("$A$4:$ZZ$100000").AutoFilter Field:=12, Criteria1:="1", _
        Operator:=xlAnd
    End If
    If CheckBox1.Value = False Then
        ActiveSheet.Range("$A$4:$ZZ$100000").AutoFilter Field:=12
    End If
End Sub

Private Sub CheckBox2_Click()
' Ansteuerung Checkbox "Normalfunktion"
    If CheckBox2.Value = True Then
        ActiveSheet.Range("$A$4:$ZZ$100000").AutoFilter Field:=13, Criteria1:="1", _
        Operator:=xlAnd
    End If
    If CheckBox2.Value = False Then
        ActiveSheet.Range("$A$4:$ZZ$100000").AutoFilter Field:=13
    End If
End Sub

Geht jeweils einzeln für insgesamt 18 Checkboxen so weiter...


Nun möchte ich jedoch beim Aufruf des UserForm eine Prüfung der jeweiligen Autofilter durchführen und jeweils in der damit verbundenen Checkbox auf dem UserForm den Haken setzen.

Den Code hierzu stelle ich mir dann irgendwie so vor...


Code:
Sub Schaltfläche1_Klicken()

UserForm1.Show

Wenn Filter in Spalte L auf Wert 1 gesetzt, dann setze den Wert der Checkbox1 auf WAHR.
Wenn Filter in Spalte M auf Wert 1 gesetzt, dann setze den Wert der Checkbox2 auf WAHR.
Wenn Filter in Spalte N auf Wert 1 gesetzt, dann setze den Wert der Checkbox3 auf WAHR.
Wenn Filter in Spalte O auf Wert 1 gesetzt, dann setze den Wert der Checkbox4 auf WAHR.
...

End Sub

Kann mir bitte jemand bei der Ausformulierung des Codes weiterhelfen, bin leider VBA-Newbie  Blush

Vielen Dank auf jeden Fall schon mal vorab für die Hilfe und Unterstützung!!!
Top
#2
Hallo Klaibi,

folgender Code kommt in das Userform:
Private Sub UserForm_Activate()
 Dim i As Long
 With ActiveSheet.AutoFilter
   For i = 12 To .Filters.Count
     Me.Controls("CheckBox" & i - 11) = .Filters(i).On
   Next i
 End With
End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Klaibi
Top
#3
Vielen Dank für den Lösungsansatz. Ich habe es natürlich gleich ausprobiert und leider funktioniert es bei mir nicht, leider erhalte ich einen Laufzeitfehler...

Debugger stoppt bei: 
    Me.Controls("CheckBox" & i - 11) = .Filters(i).On
   
Top
#4
Hallo,

welche Zahl enthält die Variable i in diesem Moment? Einfach mit der Maus darüber halten und einen Moment warten.
Im jetzigen Code werden soviele Checkboxen erwartet wie die Gesamtanzahl Spalten - 11.

Gruß Uwe
Top
#5
Hallo Uwe,

der Debugger spuckt i=30 aus, was der Gesamtanzahl an Spalten mit Autofilter-Elementen entspricht....

Viele Grüße,
Andreas
Top
#6
Hallo Andreas,

30-11 ist 19, also gibt es keine CheckBox19 im UserForm.

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Klaibi
Top
#7
Hallo Uwe,

aufgrund einer Gruppierung von Spalten wurde ein zusätzliches Autofilter-Feld eingefügt, für dieses hatte ich natürlich keine Checkbox eingerichtet. Ich habe nun eine zusätzliche Box angelegt und es läuft! 

Super Sache! Vielen Dank & viele Grüße  :23: :23:
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste