abhängige ComboBoxen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: abhängige ComboBoxen
von: VBA-Greenhorn
Geschrieben am: 09.05.2015 22:02:18

Hallo liebes Forum!
Als VBA-Greenhorn aber begeisteter Excel User beginne ich mit mit VBA zu beschäftigen.
Ich habe das Netz nach folgendem Problem durchsucht, aber entweder zu spezielle oder nicht passende Informationen gefunden:
Ich möchte eine Tabelle mit Hilfe einer Maske filtern. Die Auswahl der Filterkriterien soll dabei über drei Paare von jeweils 2 abhängigen Comboboxen erfolgen. Dazu habe ich eine Userform erstellt. Die erste Box soll mit der Liste der Kriterien gefüllt werden, die in mehreren Spalten stehen (auch gerne mit ColumnHeads). Die jeweils zweite Box soll die abhängigen Werte des ausgewählten Kriteriums in dieser Spalte enthalten, das am besten dynamisch, da die Tabelle nach unten wächst und ohne doppelte Werte in der Auswahlliste. Da insbesondere scheitere ich. Ich habe so max. 3 Kriterien, nach denen gefiltert werden soll.
Zum besseren Verständnis hänge ich die Datei an, an der ich schon ein paar codes probiert habe:https://www.herber.de/bbs/user/97558.xlsm
Freue mich auf Vorschläge. Vielen Dank.

Bild

Betrifft: AW: abhängige ComboBoxen
von: Kenny
Geschrieben am: 12.05.2015 14:10:52
Hallo!! So müsste es funktionieren :)


Private Sub ComboKrit1_Change()
Set ws = Worksheets("Daten Maxi 8a")
For spalte = 1 To ws.UsedRange.Columns.Count
    If ws.Cells(1, spalte) = ComboKrit1.Value Then
        Exit For
    End If
Next
zeile = 2
Do While ws.Cells(zeile, spalte) <> 0
    ComboBegriff1.AddItem
    ComboBegriff1.List(ComboBegriff1.ListCount - 1, 0) = ws.Cells(zeile, spalte)
    zeile = zeile + 1
Loop
End Sub


Bild

Betrifft: AW: abhängige ComboBoxen
von: VBA-Greenhorn
Geschrieben am: 12.05.2015 21:39:54
Hallo Kenny,
vielen Dank für deine Hilfe. Ich habe noch ein ComboBegriff1.clear eingefügt, damit die alten Listen aus der Box gelöscht werden. Das funktioniert echt gut.
Allerdings tauchen noch alle Werte in der Liste auf. Auch doppelte. Wie kann ich das verhindern?
Nochmals vielen Dank.
LG
VBA-Greenhorn

Bild

Betrifft: AW: abhängige ComboBoxen
von: Kenny
Geschrieben am: 13.05.2015 08:52:22
Ja stimmt das hatte ich vergessen :/
So klappt jetzt alles :)
Viel Spaß!


Private Sub ComboKrit1_Change()
Set ws = Worksheets("Daten Maxi 8a")
For spalte = 1 To ws.UsedRange.Columns.Count
    If ws.Cells(1, spalte) = ComboKrit1.Value Then
        Exit For
    End If
Next
With ComboBegriff1
zeile = 2
ComboBegriff1.Clear
Do While ws.Cells(zeile, spalte) <> 0
    x = False
    begriff = ws.Cells(zeile, spalte)
        For combozeile = 0 To .ListCount - 1
            If .List(combozeile, 0) = begriff Then
                x = True
                Exit For
            End If
        Next
            If x = False Then
                .AddItem
                .List(.ListCount - 1, 0) = ws.Cells(zeile, spalte)
            End If
        zeile = zeile + 1
Loop
End With
End Sub


Bild

Betrifft: AW: abhängige ComboBoxen
von: VBA-Greenhorn
Geschrieben am: 13.05.2015 23:18:20
Hallo Kenny,
klappt super. Vielen Dank. Echt Klasse.
Wenn ich jetzt nur die Hälfte von dem verstehen würde, was da passiert, wäre ich schon froh.
Wenn du mal Langeweile hast :) kannst du die Schritte gerne mal kommentieren.
Bin noch an dem Problem dran, wie ich den Wert der ComboKrit an den Field-Befehl für den Autofilter übergebe:

Private Sub CommandButton1_Click()
     Selection.AutoFilter
     ActiveSheet.Range("$A$1:$AA$51").AutoFilter Field:=2, Criteria1:=ComboBegriff1.Value
     End Sub

Das scheint wegen der unterschiedlichen Formate (Text, Datum, Zahl) schwierig zu sein.
Kann ich die Spaltenzahl nicht über die Spaltenüberschrift definieren und die dann mit dem Value der ComboKrit vergleichen? Ist wahrscheinlich zu laienhaft gedacht.
Jedenfalls nochmals vielen Dank.
VBA-Greenhorn

Bild

Betrifft: AW: abhängige ComboBoxen
von: Kenny
Geschrieben am: 16.05.2015 14:35:51
Versuche mal den Ansatz:


Private Sub CommandButton1_Click()
Set ws = Worksheets("Daten Maxi 8a")
For spalte = 1 To ws.UsedRange.Columns.Count
    If ws.Cells(1, spalte) = ComboKrit1.Value Then
        Exit For
    End If
Next
Selection.AutoFilter
ActiveSheet.Range("$A$1:$AA$51").AutoFilter Field:=spalte, Criteria1:=ComboBegriff1.Value
End Sub

Kommentare zu meinem Code folgen noch. Mache ich mal, wenn ich mehr Zeit habe:)

Bild

Betrifft: AW: abhängige ComboBoxen
von: Kenny
Geschrieben am: 16.05.2015 17:56:45
So jetzt!! Viel Spaß. Hoffe das ist ausreichend :)


Private Sub ComboKrit1_Change()
Set ws = Worksheets("Daten Maxi 8a")
'************Richtige Spalte finden************
For spalte = 1 To ws.UsedRange.Columns.Count
    If ws.Cells(1, spalte) = ComboKrit1.Value Then
        Exit For
    End If
Next
With ComboBegriff1
zeile = 2
ComboBegriff1.Clear
'************Verarbeitung************
Do While ws.Cells(zeile, spalte) <> 0   'nur solange ausführen bis Nullen kommen
    x = False                           'x als Zähler eingefügt, zu beginn immer auf false
    begriff = ws.Cells(zeile, spalte)   'einzufügender Begriff, der in Combo Box kommt
        For combozeile = 0 To .ListCount - 1    'Schleife von Anfang bis Ende der Comobox
            If .List(combozeile, 0) = begriff Then  'Überprüfen ob Begriff bereits vorhanden
                x = True                'Wenn Begriff vorhanden wird x Wahr
                Exit For                'Schleife kann in diesem Fall beendet werden
            End If
        Next
            If x = False Then           'Jetzt kann überprüft werden ob x sich geändert hat
                .AddItem                'Wenn es sich nicht geändert hat, also Begriff noch
                .List(.ListCount - 1, 0) = ws.Cells(zeile, spalte)  'nicht vohanden ist, kann
            End If                      'Begriff eingefügt werden
        zeile = zeile + 1               'Zeile muss um eins erhöht werden für nächsten Begriff
Loop
End With
End Sub


Bild

Betrifft: AW: abhängige ComboBoxen
von: VBA-Greenhorn
Geschrieben am: 17.05.2015 15:10:07
Hallo Kenny,
vielen Dank. Das ist echt hilfreich.
Code läuft super.
Wenn ich mal wieder was brauche, stelle ich es ins Forum.
LG
Greenhorn

 Bild

Beiträge aus den Excel-Beispielen zum Thema "abhängige ComboBoxen"