Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1424to1428
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
abhängige ComboBoxen
09.05.2015 22:02:18
VBA-Greenhorn
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.

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: abhängige ComboBoxen
12.05.2015 14:10:52
Kenny
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

AW: abhängige ComboBoxen
12.05.2015 21:39:54
VBA-Greenhorn
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

Anzeige
AW: abhängige ComboBoxen
13.05.2015 08:52:22
Kenny
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

Anzeige
AW: abhängige ComboBoxen
13.05.2015 23:18:20
VBA-Greenhorn
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

Anzeige
AW: abhängige ComboBoxen
16.05.2015 14:35:51
Kenny
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:)

AW: abhängige ComboBoxen
16.05.2015 17:56:45
Kenny
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

Anzeige
AW: abhängige ComboBoxen
17.05.2015 15:10:07
VBA-Greenhorn
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

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige