Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1444to1448
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
25.08.2015 12:22:54
Tobias
Hallo zusammen,
Ich habe folgende Userform als Vorlage für mein Projekt genommen.
http://www.j-hennekes.de/1298803.htm
Ich habe das ganze nur um einige Comboboxen erweitert, was soweit auch sehr gut geklappt hat. Ich würde nun ganz gerne, bei einigen Comboboxen den Wert "egal" oder ähnliches hinzufügen und so alle Werte dieser Spalte zu berücksichtigen.
In dem Beispiel auf j-Hennekes.de hieße dies dann z.B. das die Sehenswürdigen für alle Städte eines Landes angezeigt werden.
Wie könnte sich so etwas umsetzen lassen? Ich stehe da ein bisschen auf'm Schlauch..
Liebe Grüße,
Tobias

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abhängige Comboboxen
25.08.2015 12:53:13
Jack_d
Hallo Tobias,
ich würde es am einfachsten so lösen das du unterhalb der Tabelle ein "egal" einfügst. -- somit hast du den Wert "Egal" erstmal mit in der CB
Im Zweiten Schritt würde ich eine If abfrage oder Select case nehmen, bei der man konkret auf "Egal" oder "Was anderes" Prüft. Bei "Was anderes" wird ganz normal das Dictionary in der Lesart von j-hennekes gefüllt, und bei "Egal" muss das Dict mit allen (folgenden) Einträgen gefüllt werden.
Mehr dazu wenn ich eine Mustermappe bekomme. (mit den UF´s und vorhandenem Code)
Grüße

AW: Abhängige Comboboxen
25.08.2015 13:29:06
Tobias
Hallo,
ich habe mal eben eine Testmappe gebastelt, hoffe das reicht so und du versteht die Absicht dahinter.
https://www.herber.de/bbs/user/99819.xlsm
Wäre aber ein if-Abfrage nicht zu umständlich? Bei 6 Komboboxen ergibt dieses ja über 100 Kombinationsmöglichkeiten ? (CB1 egal - Rest nicht, CB1 und CB5 egal - Rest nicht, usw. ...)
Danke und liebe Grüße,
Tobias

Anzeige
AW: Abhängige Comboboxen
25.08.2015 13:53:29
Jack_d
Hallo Tobias
mal exemplarisch der Code für die CB2
Übrigens solltest du bei UF_initialize den Rowcount auf die Spalte 6 anpassen. Sonst kommt es gar nicht erst zu einem erscheinen des "Egal"
Private Sub ComboBox2_Enter()
'Zweite Combobox in Abhängigkeit von Combobox1.
'Jeder passende Stadt in Spalte B wird einmalig angezeigt.
Set mobjDic = CreateObject("Scripting.Dictionary")
With Worksheets(C_mstrDatenblatt)
For mlngZ = 2 To mlngLast
If Me.ComboBox1.Value = "egal" Then
mobjDic(.Cells(mlngZ, 9).Value) = 0
Else
If .Cells(mlngZ, 6).Value = Me.ComboBox1.Value Then
mobjDic(.Cells(mlngZ, 9).Value) = 0
End If
End If
Next
End With
Me.ComboBox2.List = mobjDic.keys
Set mobjDic = Nothing
End Sub

Anzeige
Ergänzend für die folgenden CB's & Gedankenanstoß
25.08.2015 14:23:53
Jack_d
Hier nochmal eine Ergänzung (für das "Problem" mit den folgenden CBen)
Hier wird im Prinzip über eine Wildcardsuche das "Egal" verwurstet
Private Sub ComboBox3_Enter()
Dim CB1Wert As String
Dim CB2Wert As String
'KEP
Set mobjDic = CreateObject("Scripting.Dictionary")
If Me.ComboBox1.Value = "egal" Then
CB1Wert = "*"
Else
CB1Wert = Me.ComboBox1.Value
End If
If Me.ComboBox2.Value = "egal" Then
CB2Wert = "*"
Else
CB2Wert = Me.ComboBox2.Value
End If
With Worksheets(C_mstrDatenblatt)
For mlngZ = 2 To mlngLast
If .Cells(mlngZ, 6).Value Like CB1Wert And .Cells(mlngZ, 9).Value Like CB2Wert Then
mobjDic(.Cells(mlngZ, 12).Value) = 0
End If
Next
End With
Me.ComboBox3.List = mobjDic.keys
Set mobjDic = Nothing
End Sub

Ich hab mir über dein Problem aber noch Gedanken gemacht.
Du könntest es evtl auch über eine Pivottabelle lösen.
Indem deine CB mit den Filtern verknüpft sind.
DH. Im Hintergrund aktualisierst du ein Pivottable welches dir dann die Passenden Ergebnisse ausspuckt.
Grüße

Anzeige
AW
25.08.2015 14:44:33
Tobias
Hey,
ich probiere das nun einmal so umzusetzen, sind so ja nur etwa 30 If Bedingungen, ich hätte noch einen ganz anderen Ansatz gehabt.
Danke und Gruß,
Tobias
P.S Pivot Tabelle ist sicher ne gute Idee, würde aber gerne die Form so behalten.

AW: AW
25.08.2015 14:59:23
Tobias
Ich habe soweit alles eingefügt, und ich meine das passt auch so alles.
Das einzige Problem ist, dass am Enden, in der letzten Combobox einfach gar nichts angezeigt wird, kann es sein, dass "*" nicht akzeptiert wird?
Grüße,
Tobias
P.S
Hier der Code für die finale Combobox
Private Sub ComboBox5_Enter()
If Me.ComboBox2.Value = "egal" Then
ComboBox2.Value = "*"
Else
ComboBox2.Value = Me.ComboBox2.Value
End If
If Me.ComboBox3.Value = "egal" Then
ComboBox3.Value = "*"
Else
ComboBox3.Value = Me.ComboBox3.Value
End If
If Me.ComboBox4.Value = "egal" Then
ComboBox4.Value = "*"
Else
ComboBox4.Value = Me.ComboBox4.Value
End If
If Me.ComboBox7.Value = "egal" Then
ComboBox7.Value = "*"
Else
ComboBox7.Value = Me.ComboBox7.Value
End If
If Me.ComboBox8.Value = "egal" Then
ComboBox8.Value = "*"
Else
ComboBox8.Value = Me.ComboBox8.Value
End If
If Me.ComboBox9.Value = "egal" Then
ComboBox9.Value = "*"
Else
ComboBox9.Value = Me.ComboBox9.Value
End If
Set mobjDic = CreateObject("Scripting.Dictionary")
Dim i As Object
With Worksheets(C_mstrDatenblatt)
For mlngZ = 2 To mlngLast
If .Cells(mlngZ, 6).Value = Me.ComboBox1.Value And .Cells(mlngZ, 9).Value = Me.ComboBox2. _
Value And .Cells(mlngZ, 12).Value = Me.ComboBox3.Value And .Cells(mlngZ, 13).Value = Me.ComboBox4.Value And .Cells(mlngZ, 14).Value = Me.ComboBox7.Value And .Cells(mlngZ, 15).Value = Me.ComboBox8.Value And .Cells(mlngZ, 8).Value = Me.ComboBox9.Value Then
mobjDic(.Cells(mlngZ, 1).Value) = 0
End If
Next
End With
Me.ComboBox5.List = mobjDic.keys
Set mobjDic = Nothing
End Sub

Anzeige
AW: AW
25.08.2015 14:59:27
Tobias
Ich habe soweit alles eingefügt, und ich meine das passt auch so alles.
Das einzige Problem ist, dass am Enden, in der letzten Combobox einfach gar nichts angezeigt wird, kann es sein, dass "*" nicht akzeptiert wird?
Grüße,
Tobias
P.S
Hier der Code für die finale Combobox
Private Sub ComboBox5_Enter()
If Me.ComboBox2.Value = "egal" Then
ComboBox2.Value = "*"
Else
ComboBox2.Value = Me.ComboBox2.Value
End If
If Me.ComboBox3.Value = "egal" Then
ComboBox3.Value = "*"
Else
ComboBox3.Value = Me.ComboBox3.Value
End If
If Me.ComboBox4.Value = "egal" Then
ComboBox4.Value = "*"
Else
ComboBox4.Value = Me.ComboBox4.Value
End If
If Me.ComboBox7.Value = "egal" Then
ComboBox7.Value = "*"
Else
ComboBox7.Value = Me.ComboBox7.Value
End If
If Me.ComboBox8.Value = "egal" Then
ComboBox8.Value = "*"
Else
ComboBox8.Value = Me.ComboBox8.Value
End If
If Me.ComboBox9.Value = "egal" Then
ComboBox9.Value = "*"
Else
ComboBox9.Value = Me.ComboBox9.Value
End If
Set mobjDic = CreateObject("Scripting.Dictionary")
Dim i As Object
With Worksheets(C_mstrDatenblatt)
For mlngZ = 2 To mlngLast
If .Cells(mlngZ, 6).Value = Me.ComboBox1.Value And .Cells(mlngZ, 9).Value = Me.ComboBox2. _
Value And .Cells(mlngZ, 12).Value = Me.ComboBox3.Value And .Cells(mlngZ, 13).Value = Me.ComboBox4.Value And .Cells(mlngZ, 14).Value = Me.ComboBox7.Value And .Cells(mlngZ, 15).Value = Me.ComboBox8.Value And .Cells(mlngZ, 8).Value = Me.ComboBox9.Value Then
mobjDic(.Cells(mlngZ, 1).Value) = 0
End If
Next
End With
Me.ComboBox5.List = mobjDic.keys
Set mobjDic = Nothing
End Sub

Anzeige
Moin
26.08.2015 10:39:45
Jack_d
Hallo Tobias,
Keine Ahnung was du meinst.
Soweit ich das umreissen kann, muss man bei den Bedinungen bisschen Nachdenken.
An der Stelle also eher ein logisches als ein VBA Problem.
Was erhellenderes kann ich leider auch grad nicht zum Besten geben
Grüße

AW: Moin
26.08.2015 11:20:35
Tobias
Moin!
Es scheint mir, als würde VBA das "*" nicht akzeptieren, und somit nicht alle Optionen in der jeweiligen Spalte berücksichtigen.
Aber ich danke dir trotzdem, vielleicht komme ich ja noch drauf.
Danke und Gruß,
Tobias

AW: Moin
26.08.2015 12:34:37
Jack_d
Moin,
also Das VBA das "*" nicht akzeptiert ist "Pfeffer" VBA akzeptiert es ja auch in den vorhergehenden CB's.
Somit ist es wahrscheinlich ein logisches Problem :-D
Grüße

Anzeige
AW: Moin
26.08.2015 12:45:06
Tobias
Ne das glaube ich nicht, auch in den vorhergehenden kann ich nichts auswählen. Das hätte ich wohl erwähnen sollen.
Ich kann nur "egal" auswählen, welches ich per .additem und nicht per extra Spalte im Datenblatt eingefügt habe.
Löscht man das aber, ist nach der ersten Eingabe "egal" auch in dem zweiten CB's nichts auswählbar.

AW: Moin
26.08.2015 15:26:03
Jack_d
Moin Moin,
also bei mir geht es. Hab mal ein Muster gebastelt.
Einfach mal klicken und schauen. Aber m.E. macht es genau das was du willst.
Grüße
https://www.herber.de/bbs/user/99836.xls

Anzeige
AW: Moin
26.08.2015 15:40:25
Tobias
Hi Jack,
ah ok super danke. Muss ich mir mal genauer anschauen, sieht doch im Detail etwas anders aus als bei mir, bin wie gesagt noch relativ unerfahren mit VBA.
Auf jeden Fall vielen Dank!!
Grüße,
Tobias

auch mit 4 Cb's
26.08.2015 15:49:47
Jack_d
funktioniert es ..
Und veranschaulicht das ganze noch in der Funktionsweise.
Hier noch mit dem Addendum das die "darunter liegenden/ späteren" CB's geleert werden.
Grüße
https://www.herber.de/bbs/user/99840.xls

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige