Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
404to408
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
404to408
404to408
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
doppelte Werte in Combobox2 entfernen
Fabio
Hallo,
ich habe so ziemlich jeden Beitrag im Archiv zu diesem Thema durch, aber leider nichts passendes gefunden bzw. nicht verstanden ;-)
Folgendes Tabellenblatt:
SPALTE A.....SPALTE B
----------------
Januar.......20
Januar.......20
März.........10
Februar......10
März.........10
Januar.......5
Über die Combobox1 wähle ich z.b den Januar. Nun stehen in Combobox2 alle Werte in Abhänigkeit von Combobox1, d.h. "20", "20", "5"
Was ich jetzt will, ist, das die doppelten Werte, also "20", in der CB2 nur einmal aufgeführt werden (wenn möglich sollten die Werte in den Comboboxen auch sortiert sein).
Hier noch den Code den ich habe um die Werte in der gegenseitgen Abhängikeit von CB2 CB1 auszugeben. Vielleicht könnt ihr mir dann auch gleich sagen wo ich euren "Hilfscode :-) " genau einbauen muss...

Private Sub ComboBox1_Click()
Dim monat As String, i As Integer
Me.ComboBox2.Clear
monat = Me.ComboBox1.Text
i = 2
With Sheets("Tabelle1")
Do While .Cells(i, 1) <> ""
If .Cells(i, 1) = monat Then
Me.ComboBox2.AddItem .Cells(i, 2)
End If
i = i + 1
Loop
End With
End Sub


Private Sub UserForm_Initialize()
Dim i As Integer
Me.ComboBox1.Clear
Me.ComboBox2.Clear
With Sheets("Tabelle1")
For i = 2 To 546
If .Cells(i, 2) <> .Cells(i - 1, 2) Then
Me.ComboBox2.AddItem .Cells(i, 2)
End If
Next i
End With
With Sheets("Tabelle1")
For i = 2 To 546
If .Cells(i, 1) <> .Cells(i - 1, 1) Then
Me.ComboBox1.AddItem .Cells(i, 1)
End If
Next i
End With
End Sub


Private Sub ComboBox2_Click()
Dim monat As String, i As Integer
Me.ComboBox1.Clear
monat = Me.ComboBox2.Text
i = 2
With Sheets("Tabelle1")
Do While .Cells(i, 2) <> ""
If .Cells(i, 2) = monat Then
Me.ComboBox1.AddItem .Cells(i, 1)
End If
i = i + 1
Loop
End With
End Sub

***********
Vielen Dank an alle schonmal
Grüße FABIO

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: doppelte Werte in Combobox2 entfernen
Christoph
Hi Fabio,
eigentlich hab ich gestern auf ne Rückmeldung von dir gewartet.
Naja, wie ich sehe, hast du meinen Code verwendet.
Ich frage mich allerdings, ob es sinnvoll ist, schon bei der Initialisierung beide ComboBoxes zu füllen und dann in jeder der beiden in Abhängigkeit des Eintrages der andern die Auswahl zu erzeugen...aber wenn du das so willst, ich kenn ja deine UF nicht im Detail.
das Einlesen von doppelten Werte in die ComboBoxes lässt sich nur vermeiden, wenn du die Eintäge vor dem Einlesen sortierst, dann wird auch nur jeder Eintrag einmal übernommen.
Also: entweder sortierst du zuvor die Tabelle oder
Alternative: Lese die Werte in ein Array ein und sortiere sie innerhalb des Arrays mittels "bubblesort" oder besser "quicksort". Der Code hierzu findest du in der Recherche unter eben jenen Begriffen.
Gruß
Christoph
('ne Rückmeldung wäre nett)
Anzeige
AW: doppelte Werte in Combobox2 entfernen
Fabio
Hi Christoph,
sorry dass du auf 'ne Rückmeldung warten musstest.
Vielen Dank für deine Hilfe. Dein Code ist genau das was ich die gesucht hatte. Wie du siehst habe ich versucht ihn zu erweitern, sodaß die Comboboxen gegenseitig in Abhängigkeit stehen. Allerdings funktioniert dass nur z.T. so wie ich dass gerne hätte.
Wenn ich in der Combo1 meine Auswahl treffe und dann in Combo2 die Werte wähle die zu Verfügung stehen, wird der Ausgewählte Wert in Combo1 gelöscht. Das liegt wohl an:
Me.ComboBox1 bzw 2 .Clear ?
Entferne ich dies, füllt sich die Combobox mit den Inhalten aus den 2 Spalten....
Was kann ich dagegen tun?
...was meinst Du damit, ob es sinnvoll ist, bei der Initialisierung beide Comboboxen zu füllen? sprichst du damit schon das von mir beschriebene Problem an?
Danke noch in für den Tip mit dem sortieren. Nächste Rückmeldung ist garantiert ! :-)
Anzeige
AW: doppelte Werte in Combobox2 entfernen
Christoph
Hi Fabio,
mit: "Me.ComboBox1 bzw 2 .Clear" löschtst du die Einträge der jeweiligen Combobox. Das ist richtig.
Dies ist aber erforderlich, da du sonst die neuen Einträge zu den vorhandenen dazuschreibst.
Lass die ".Clear-Anweisung weg" und klick mal abwechselnd auf die ComboBoxes. Du wirst sehen, die Listen werden immer länger und haben dann natürlich nichts mehr mit den Werten aus der Tabelle zu tun.
Wenn du unbedingt eine gegenseitige Abhängigkeit haben willst, so könnte man das z.B. über zwei OptionButtons lösen, über die die Auswahl, welche ComBobox als erstes angeklickt wird, festlegt.
Evt gibt's hier auch noch elegantere Möglichkeiten, aber im Moment fällt mir dazu nichts passenderes ein.
Gruß
Christoph
Anzeige
AW: doppelte Werte in Combobox2 entfernen
Fabio
Hi Christoph,
erstmals nochmal vielen Dank für Deine Hilfe. Ich hoffe das es Dich nicht zu sehr schockt, wenn ich Dir jetzt sage, dass ich mein Problem jetzt auf gänzlich andere Weise gelöst habe.
Die verzweifelte rumklickerei und rumschieberei die ich in meinem Programm hatte, haben mehr Probleme aufgeworfen als in der mir verbleibenden Zeit zu bewältigen wären.
Ich spreche nun über einen Bezug verschieden Zellen an die ich dann über die RowSource (A20:A x)in die Combobox lade.
Hört sich nach Pfuscherei an (...und ist es auch :-) ) aber es funktioniert!
A20 -- =WENN($B$1="mit";"105";WENN($B$1="ohne";200;....)
A21 -- = ...
....... -- = ...
Grüße FABIO
Anzeige
Danke für die Rückmeldung
31.03.2004 19:21:41
Christoph
Hi Fabio,
wenn das für deine Belange ausreichend ist, schön.
Gruß
Christoph

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige