Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1448to1452
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
Mehrere Checkboxen in Userform
02.10.2015 11:03:53
Kasi
Hallo...
habe folgendes Problem.
Habe eine Userform mit 9 Checkboxen erstellt.
Diese Checkboxen filtern die Spalte A nach den jeweiligen Buchstaben (A, B usw.)
Das funktioniert bei der Einzelauswahl wunderbar.
Wenn ich mehrere anwähle, wird nur die letzte angezeigt(gefiltert).
Wäre schön wenn mir jemand den Code erweitern könnte.
Hier mein Code:
  • 
    Private Sub CommandButton1_Click()
    If UserForm2.CheckBox1.Value = True Then
    ActiveSheet.Range("$A$6:$J$1305").AutoFilter Field:=1, Criteria1:= _
    "A"
    End If
    If UserForm2.CheckBox2.Value = True Then
    ActiveSheet.Range("$A$6:$J$1305").AutoFilter Field:=1, Criteria1:= _
    "B"
    End If
    If UserForm2.CheckBox3.Value = True Then
    ActiveSheet.Range("$A$6:$J$1305").AutoFilter Field:=1, Criteria1:= _
    "C"
    End If
    If UserForm2.CheckBox4.Value = True Then
    ActiveSheet.Range("$A$6:$J$1305").AutoFilter Field:=1, Criteria1:= _
    "D"
    End If
    If UserForm2.CheckBox5.Value = True Then
    ActiveSheet.Range("$A$6:$J$1305").AutoFilter Field:=1, Criteria1:= _
    "E"
    End If
    If UserForm2.CheckBox6.Value = True Then
    ActiveSheet.Range("$A$6:$J$1305").AutoFilter Field:=1, Criteria1:= _
    "F"
    End If
    If UserForm2.CheckBox7.Value = True Then
    ActiveSheet.Range("$A$6:$J$1305").AutoFilter Field:=1, Criteria1:= _
    "G"
    End If
    If UserForm2.CheckBox8.Value = True Then
    ActiveSheet.Range("$A$6:$J$1305").AutoFilter Field:=1, Criteria1:= _
    "H"
    End If
    Me.Hide
    End Sub
    

  • 20
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Mehrere Checkboxen in Userform
    02.10.2015 11:28:08
    Nepumuk
    Hallo,
    teste mal:
    Private Sub CommandButton1_Click()
        
        Dim astrFilter() As String
        Dim ialngIndex As Long, lngIndex As Long
        
        For lngIndex = 1 To 8
            
            If Controls("CheckBox" & lngIndex).Value Then
                
                ialngIndex = ialngIndex + 1
                Redim Preserve astrFilter(1 To ialngIndex)
                astrFilter(ialngIndex) = Chr$(64 + lngIndex)
                
            End If
        Next
        
        Call Rows(1).AutoFilter(Field:=1, Criterial1:=astrFilter, Operator:=xlFilterValues)
        
        Hide
        
    End Sub

    Gruß
    Nepumuk

    Anzeige
    AW: Mehrere Checkboxen in Userform
    02.10.2015 11:33:22
    Kasi
    Hallo Nepumuk,
    meinen Code ersetzen oder deinen davor setzen?
    Gruß
    Kasi

    AW: Mehrere Checkboxen in Userform
    02.10.2015 11:36:33
    Nepumuk
    Hallo,
    deinen Code ersetzen. Ist aber noch ein Fehler drin:
    Private Sub CommandButton1_Click()
        
        Dim astrFilter() As String
        Dim ialngIndex As Long, lngIndex As Long
        
        For lngIndex = 1 To 8
            
            If Controls("CheckBox" & lngIndex).Value Then
                
                ialngIndex = ialngIndex + 1
                Redim Preserve astrFilter(1 To ialngIndex)
                astrFilter(ialngIndex) = Chr$(64 + lngIndex)
                
            End If
        Next
        
        Call Rows(6).AutoFilter(Field:=1, Criteria1:=astrFilter, Operator:=xlFilterValues)
        
        Hide
        
    End Sub

    Du fängst ja erst ab Zeile 6 an und Criteria1 hab ich falsch geschrieben.
    Gruß
    Nepumuk

    Anzeige
    AW: Mehrere Checkboxen in Userform
    02.10.2015 12:01:54
    Kasi
    Hallo Nepumuk,
    leider springt er jetzt in Zeile 1306.
    Hat einen Filter der aber nichts beinhaltet.
    Gruß
    Kasi

    AW: Mehrere Checkboxen in Userform
    02.10.2015 11:30:31
    Daniel
    Hi
    das Problem bei dir ist, dass bei jeder aktiven Checkbox der bestehende Autofilter durch den neuen ersetzt wird.
    Desweiteren ist es so, dass wenn du nach mehr als 2 verschiedenen Werten gleichzeitig filtern willst, du diese Filterwerte erst in einem eindimensionalen Array sammeln musst und dann dieses Array als Filterkriterium einsetzen:
    Dim FilterText As String
    With Userform1
    If .Checkbox1 Then FilterText = FilterText & " " & "A"
    If .Checkbox2 Then FilterText = FilterText & " " & "B"
    '... hier bitte entsprechen für die weiteren Checkboxen ergeänzen
    If .Checkbox8 Then FilterText = FilterText & " " & "H"
    End With
    FilterText = Trim(FilterText)
    ActiveSheet.Range("$A$6:$J$1305").AutoFilter Field:=1, _
    Criteria1:=Split(FilterText, " "), _
    Operator:=xlFilterValues
    
    Ich sammel hier erstmal die Filterwerte in einem Textstring mit Trennzeichen und mache dann über die SPLIT-Funktion aus dem Text das Array.
    Gruß Daniel

    Anzeige
    AW: Mehrere Checkboxen in Userform
    02.10.2015 12:05:03
    Kasi
    Hi Daniel,
    funktioniert wunderbar...musste nur noch "Me.Hide" einfügen.
    Klasse...Danke
    Gruß
    Karsten

    AW: Mehrere Checkboxen in Userform
    02.10.2015 13:27:31
    Kasi
    Hi Daniel,
    habe das jetzt mal auf insg.23 Checkboxen erweitert.
    Jetzt spuckt er mir bei den verschiedensten Checkboxen kein Ergebnis aus.
    Was kann das jetzt wieder sein?
    Habe die einzelnen Zeilen im Code einfach nur kopiert.
    Gruß
    Kasi

    AW: Mehrere Checkboxen in Userform
    02.10.2015 13:40:36
    Daniel
    Hi
    naja, ich hab das ja nur exemplarisch für drei Checkboxen gezeigt.
    Dh. du darfst den Code nicht einfach nur kopieren, sondern du musst ihn noch entsprechend den hierfür benögigten Checkboxen erweitern.
    Ich kann dir ja auch keinen kopierfertigen Code liefern, weil ich dazu ja wissen müsste, wie deine Checkboxen heissen.
    Gruß Daniel

    Anzeige
    AW: Mehrere Checkboxen in Userform
    02.10.2015 13:59:24
    Kasi
    Hi Daniel,
    habe den code der einzelnen Zeilen natürlich um die Zahl jeweils erhöht
    und den jeweiligen Namen der Checkboxen auch angepasst.
    Und trotzdem kommt es zu dem Phänomen.
    Gruß
    Kasi

    AW: Mehrere Checkboxen in Userform
    02.10.2015 14:08:50
    Daniel
    HI
    wie stellst du dir vor, dass ich deinen Fehler finden kann, wenn ich weder deine Code, noch deine Datei dazu kenne?
    gruß Daniel

    AW: Mehrere Checkboxen in Userform
    02.10.2015 14:18:53
    Kasi
    Hi Daniel,
    stimmt...
    hier der code:
  • 
    Private Sub CommandButton1_Click()
    Dim FilterText As String
    With UserForm2
    If .CheckBox1 Then FilterText = FilterText & " " & "kasten"
    If .CheckBox2 Then FilterText = FilterText & " " & "ausbau"
    If .CheckBox3 Then FilterText = FilterText & " " & "Fahrzeug"
    If .CheckBox4 Then FilterText = FilterText & " " & "Fahrwerk"
    If .CheckBox5 Then FilterText = FilterText & " " & "Motor"
    If .CheckBox6 Then FilterText = FilterText & " " & "Steuerung"
    If .CheckBox7 Then FilterText = FilterText & " " & "Hilfsbetrieb"
    If .CheckBox8 Then FilterText = FilterText & " " & "Überwachung"
    If .CheckBox9 Then FilterText = FilterText & " " & "Beleuchtung"
    If .CheckBox10 Then FilterText = FilterText & " " & "Klima"
    If .CheckBox11 Then FilterText = FilterText & " " & "Nebenbetrieb"
    If .CheckBox12 Then FilterText = FilterText & " " & "Türen"
    If .CheckBox13 Then FilterText = FilterText & " " & "Information"
    If .CheckBox14 Then FilterText = FilterText & " " & "Pneumatik"
    If .CheckBox15 Then FilterText = FilterText & " " & "Hydraulik"
    If .CheckBox16 Then FilterText = FilterText & " " & "Fz-Verbindung"
    If .CheckBox17 Then FilterText = FilterText & " " & "Umschließung"
    If .CheckBox18 Then FilterText = FilterText & " " & "elektrik"
    If .CheckBox19 Then FilterText = FilterText & " " & "Sonstiges"
    If .CheckBox20 Then FilterText = FilterText & " " & "Einstiege"
    If .CheckBox21 Then FilterText = FilterText & " " & "Fristarbeiten"
    If .CheckBox22 Then FilterText = FilterText & " " & "Weisungen"
    If .CheckBox23 Then FilterText = FilterText & " " & "Sonder"
    End With
    FilterText = Trim(FilterText)
    ActiveSheet.Range("$A$6:$J$1305").AutoFilter Field:=1, _
    Criteria1:=Split(FilterText, " "), _
    Operator:=xlFilterValues
    Me.Hide
    Unload Me
    End Sub
    

  • siehst Du da einen Fehler?
    Die Datei würde ich nicht so gerne hier herein stellen.
    Gruß
    Kasi

    Anzeige
    AW: Mehrere Checkboxen in Userform
    02.10.2015 14:28:06
    Daniel
    Hi
    ich sehe in dem Code keinen Fehler.
    Sind die Texte alle richtig geschrieben, dh genau so wie in der zu filternden Spalte?
    Diese Filtermethode filtert nur nach genauer Übereinstimmung mit einem Array-Wert.
    Gruß Daniel

    AW: Mehrere Checkboxen in Userform
    02.10.2015 15:31:42
    Kasi
    Hi Daniel,
    ja habe jedes einzelne Wort aus der Liste kopiert
    um keinen Fehler zu machen...
    Gruß
    Kasi

    AW: Mehrere Checkboxen in Userform
    02.10.2015 15:40:45
    Daniel
    Hi
    und funktioniert es jetzt?
    wenn nein, kann ich dir ohne die Datei dazu auch nicht weiterhelfen.
    Der Code an sich ist richtig, aber er muss halt auch zur Datei passen.
    Gruß Daniel

    Anzeige
    AW: Mehrere Checkboxen in Userform
    02.10.2015 16:01:22
    Kasi
    Hi Daniel,
    funktioniert leider nicht.
    Die Datei möchte ich hier nicht posten.
    Wenn es keine andere Möglichkeit gibt wäre das Schade.
    Gruß
    Kasi

    AW: Mehrere Checkboxen in Userform
    02.10.2015 16:22:00
    Daniel
    Das ist hier wie beim Arzt.
    wenn der Patient nicht auf dem Tisch liegt, isses schwer ne Diagnose zu stellen.
    brauchen würde ich ja nur die Spalte, in der du filterst.
    alles andere kannst du löschen oder durch nichtssagende Dummywerte ersetzen.
    Gruß Daniel

    AW: Mehrere Checkboxen in Userform
    02.10.2015 17:23:51
    Kasi
    Ok Daniel,
    werde ich Montag früh zusammen bauen.
    Hab sie leider hier nicht greifbar.
    Trotzdem erstmal vielen Dank und
    Ein schönes Wochenende
    Gruß
    Kasi

    Anzeige
    AW: Mehrere Checkboxen in Userform
    05.10.2015 09:48:13
    Kasi
    So jetzt habe ich die Tabelle soweit zusammen geschrumpft...
    Der erste Filter der nicht funktioniert ist "Energie-, Antriebsanlage"
    Weitere folgen noch.
    Vielleicht entdeckt jemand den Fehler.
    https://www.herber.de/bbs/user/100586.xlsm
    Desweiteren ist noch ein Problemchen, wenn in der Userform nichts ausgewählt wird...aber das ist nicht so schlimm.
    Gruß Kasi

    AW: Mehrere Checkboxen in Userform
    05.10.2015 12:22:38
    Daniel
    Hi
    dein Code arbeitet folgendermassen:
    1) die ausgewählten Filtertexte werden zu einem Textstring zusammengefügt, dabei verwendest du das Leerzeichen als Trennzeichen.
    2) um das für dein Filter benötigte Array zu erzeugen, wird dann dieser Textstring am verwendeten Trennzeichen aufgeteilt und die Einzelteile in ein Array geschrieben (das macht die Funktion Split).
    das Leerzeichen als Trennzeichen hat den Vorteil, dass man mit Hilfe der Funktion Worksheetfunction.Trim sehr einfach überzählige Trennzeichen am Anfang oder Ende und mehrfach direkt aufeinander folgende Trennzeichen bereinigen kann.
    Allerdings musst du beachten, dass dieses Trennzeichen ein Zeichen sein muss, welches sonst im Text nicht vorkommt.
    Deine Texte enthalten aber das Leerzeichen und die Funktion Split kann ja nicht unterscheiden, ob das Leerzeichen jetzt zum Text gehört oder nicht und macht daher aus dem Kriterium "Energie-, Antriebsanlage" die zwei Kriterien "Energie-," und "Antriebsanlage"
    In deinen Ersten Anfragen, auf deren Basis ich den Code für dich erstllt habe, waren die Filterkriterien immer nur Einzelbuchstaben oder einzelne Wörter, das Leerzeichen kam innerhalb eines Filterkriterums nicht vor, daher habe ich mich aus dem oben genannten Grund für das Leerzeichen als Trennzeichen entschieden.
    Wenn deine Texte jedoch Leerzeichen enthalten, musst du ein anderes Trennzeichen verwenden, das Trennzeichen muss ein Zeichen sein, welches in den Texten ansonsten nicht vorkommt.
    Ich nehme da ganz gerne die Pipe: |.
    da aufgrund deiner Erstellmethode der Filtertext am Anfang ein Trennzeichen zuviel enthält, solltest du dieses entfernen.
    Da das TRIM nur mit dem Leerzeichen funktioniert, musst du dieses Trennzeichen anders entfernen, bspw mit der MID-Funktion:
    With UserForm2
    If .CheckBox1 Then FilterText = FilterText & "|" & "Fahrzeugkasten"
    If .CheckBox23 Then FilterText = FilterText & "|" & "Sonderarbeiten"
    End with
    FilterText = Mid(Filtertext, 2)
    
    Gruß Daniel

    Anzeige
    AW: Mehrere Checkboxen in Userform
    05.10.2015 12:55:46
    Kasi
    Hi Daniel,
    habe die Leerzeichen jetzt entfernt.
    Die Texte sind ja nicht so gebunden.
    Funktioniert jetzt alles einwandfrei.
    Vielen Dank nochmal für deine Hilfe
    Gruß
    Kasi

    299 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige