Anzeige
Archiv - Navigation
1660to1664
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
Inhaltsverzeichnis

Comboboxen

Comboboxen
14.12.2018 15:21:12
Kurt
Kann mir bitte jemand helfen? ich komm einfach nicht weiter...
Ich habe eine UserForm mit mehreren Comboboxen die alle die selbe Auswahlmöglichkeit haben (entweder über .List beim initialisieren befüllt, oder über RowSource).
Wenn in der ersten Combobox eine Auswahl getroffen wurde, soll diese in den anderen Comboboxen nicht mehr zur Auswahl stehen (usw).
Ich würde die Aufgabe gerne nur mit VBA lösen, schaffs aber einfach nicht. Hat vielleicht jemand zumindest ein stichwort für mich. ich steh echt an...
vielen dank!

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Comboboxen
14.12.2018 15:38:34
sigrid
Hallo Kurt,
ich habe dies so gelöst:
If Me.ComboBox1.Value = True Then
Me.ComboBox2.Value = False
Me.ComboBox3.Value = False
end if
gruß sigrid
AW: Comboboxen
14.12.2018 16:25:45
Kurt
danke für deine antwort.
ich glaub ich hab mich nicht so klar ausgedrückt wie ich vor hatte :-/.
wenn in Combobox1 "Äpfel, Birnen, Bananen" zur Auswahl stehen (so wie zu Beginn überall), und in Combobox1 "Birnen" gewählt wird, soll in den anderen Comboboxen nur noch "Äpfel und Bananen" zur Auswahl stehen.
Trotzdessen hab ich deinen Code in ein Change Event geschrieben, aber da passiert gar nichts! Vielleicht liegt es an mir. Kannst Du mir sagen ob dein Lösungsweg zu dem beschriebenen Problem gehört?
Anzeige
AW: Comboboxen
14.12.2018 17:38:55
Beverly
Hi Kurt,
lade doch mal eine Beispielmappe hoch.


AW: Comboboxen
14.12.2018 19:45:18
Kurt
hallo beverly!
gerne!
https://www.herber.de/bbs/user/126114.xlsm
hast du eine idee?
ich denke dass das irgendwie mit .additem und einer schleife gehen sollte. aber da kenn ich mich nicht wirklich aus.
in meiner datei befinden sich ausserdem 9 comboboxen, aber das ist vermutlich nebensächlich...
danke fürs anschauen!
AW: Comboboxen
14.12.2018 21:06:00
Beverly
Hi Kurt,
Option Explicit
Dim lngZeile As Long
Private Sub UserForm_Initialize()
For lngZeile = 1 To 4
cb_P1.AddItem Cells(lngZeile, 1)
cb_P2.AddItem Cells(lngZeile, 1)
cb_P3.AddItem Cells(lngZeile, 1)
Next lngZeile
End Sub
Private Sub cb_P1_AfterUpdate()
cb_P2.Clear
cb_P3.Clear
For lngZeile = 1 To 4
If Cells(lngZeile, 1)  cb_P1 Then
cb_P2.AddItem Cells(lngZeile, 1)
cb_P3.AddItem Cells(lngZeile, 1)
End If
Next lngZeile
End Sub
Private Sub cb_P2_AfterUpdate()
cb_P3.Clear
For lngZeile = 1 To 4
If Cells(lngZeile, 1)  cb_P2 And Cells(lngZeile, 1)  cb_P1 Then
cb_P3.AddItem Cells(lngZeile, 1)
End If
Next lngZeile
End Sub

cb_P1 hat das Primat (Liste bleibt immer vollständig) - wird dort eine Auswahl getroffen, wird dieser Inhalt aus den anderen beiden ComboBoxen entfernt. cb_P2 ist die sekundäre ComboBox - wird dort etwas ausgewählt, wird der Inhalt aus cb_P3 entfernt.


Anzeige
AW: Comboboxen
15.12.2018 07:08:00
Kurt
Guten Morgen!
Herzlichen Dank, das sieht super aus und ich kanns gar nicht erwarten es auszuprobieren! :-)
Noch eine frage bitte:
In cb_P1 soll die Auswahl ebenfalls reduziert werden falls der Anwender nochmals "zurück geht".
Aber diese combobox muss als primat vollständig bleiben wenn ich recht verstanden hab.
Wäre es da eine Option eine cb_P0 einzufügen, diese ".visible=false" zu setzen und diese dann als primat fungieren zu lassen?
Vielen dank nochmals, ich freu mich voll! :-D
AW: Comboboxen
15.12.2018 08:53:51
Beverly
Hi,
eine "unsichtbare" ComboBox braucht man nicht, denn in der Tabelle stehen doch die Werte. Außerdem: ein Primat macht nur Sinn, wenn etwas anders davon abhängig ist. Da du aber in dieser cb_P0 nichts auswählen kannst, kann sie doch auch keinen Einfluss auf die Einträge in den anderen ComboBoxen haben und somit nicht als Primat fungieren.
Was verstehst du unter "nochmal zurück geht"? Beispiel: in cb_P1 wurde "Äpfel" ausgewählt -&gt in cb_P2 und cb_P3 wird "Äpfel" nicht mehr angezeigt. Danach wird in cb_P2 "Birnen" ausgewählt - soll dann in cb_P1 und cb_P3 "Birnen" abgewählt und stattdessen "Äpfel" wieder angezeigt werden? Was ist dann mit cb_P2 - soll dort ebenso "Äpfel", also alle 4 Einträge wieder vorhanden sein? Bei solch einem Szenario hätte dann immer die gerade aktive ComboBox das Primat und beide anderen wären von dieser abhängig - was für einen Sinn soll so etwas machen? Bei 2 voneinander abhängigen ComboBoxen könnte ich es noch verstehen, aber bei 3...?


Anzeige
AW: Comboboxen
15.12.2018 12:08:56
Kurt
Danke dass Du Dir die Zeit nimmst!
geplantes Szenario:
in Combobox1 wird Äpfel gewählt: Äpfel stehen in cb 2 & 3 nicht mehr zur Auswahl.
in Combobox2 wird Birnen gewählt: Birnen stehen in cb 1 & 3 nicht mehr zur Auswahl.
In Combobox1 steht noch immer "Äpfel" ausgewählt, aber wenn man das Dropdown der Combobox1 erneut herunterklappt (weil man "zurück geht" und merkt dass man doch nicht "Äpfel" anklicken wollte) steht eben "Birnen" nicht mehr zur Wahl.
Damit soll verhindert werden dass zwei Comboboxen mit der selben Auswahl vorhanden sind.
In Wirklichkeit hab ich 9 Comboboxen und ca. 20 Auswahlmöglichkeiten. Da macht das mehr Sinn als in dem vereinfachten Beispiel.
LG, Kurt
Anzeige
AW: Comboboxen
15.12.2018 12:08:57
Kurt
Danke dass Du Dir die Zeit nimmst!
geplantes Szenario:
in Combobox1 wird Äpfel gewählt: Äpfel stehen in cb 2 & 3 nicht mehr zur Auswahl.
in Combobox2 wird Birnen gewählt: Birnen stehen in cb 1 & 3 nicht mehr zur Auswahl.
In Combobox1 steht noch immer "Äpfel" ausgewählt, aber wenn man das Dropdown der Combobox1 erneut herunterklappt (weil man "zurück geht" und merkt dass man doch nicht "Äpfel" anklicken wollte) steht eben "Birnen" nicht mehr zur Wahl.
Damit soll verhindert werden dass zwei Comboboxen mit der selben Auswahl vorhanden sind.
In Wirklichkeit hab ich 9 Comboboxen und ca. 20 Auswahlmöglichkeiten. Da macht das mehr Sinn als in dem vereinfachten Beispiel.
LG, Kurt
Anzeige
AW: Comboboxen
15.12.2018 19:58:07
Beverly
Hi Kurt,
und was soll in dem Fall mit cb_P3 werden - sollen dann dort Birnen UND Äpfel nicht mehr zur Verfügung stehen? Sorry, aber diese "Logik" ist mir zu hoch.


AW: Comboboxen
15.12.2018 22:35:16
Kurt
ja, exakt!
alles was in einer der comboboxen ausgewählt wurde soll in allen anderen nicht mehr zur verfügung stehen.
ungeachtet dessen ob in der jeweiligen combobox bereits eine auswahl getroffen wurde oder nicht.
denkst du das klappt mit deinem code?
ich kann es leider erst am montag versuchen.
danke nochmals! :-)
Anzeige
AW: Comboboxen
15.12.2018 22:46:57
Kurt
noch eine anmerkung: nur so kann ich vermeiden dass in 2 comboboxen die selben inhalte gewählt werden, und das ist das ziel.
ist das verständlich?
AW: Comboboxen
15.12.2018 23:44:14
Beverly
Das ist so aus logischen Gründen nicht lösbar, denn wenn du in jede ComboBox zurückkehren willst und einmal ausgewählte Inhalte nicht mehr zur Verfügung stehen sollen, hast du irgendwann überhaupt nichts mehr zur Auswahl. Beispiel:
Schritt 1: cb_P1 Auswahl Äpfel -&gt cb_P2/cb_P3 Birne, Karotte, Zwetschke, (Äpfel sind raus)
Schritt 2: cb_P2 Auswahl Birne -&gt cb_P1/cb_P3 Karotte, Zwetschke, (Äpfel und Birne sind raus)
Schritt 3: cb_P3 Auswahl Karotte -&gt cb_P1/cb_P2 Zwetschke, (Äpfel, Birne und Karotte sind raus)
Schritt 4: cb_P2 Auswahl Zwetschke -&gt cb_P1/cb_P3 nichts mehr


Anzeige
AW: Comboboxen
16.12.2018 08:03:02
Kurt
Ich hab ja 9 comboboxen und 20 "obstsorten" in meiner datei. Da bleiben auch in der letzten combobox noch 12 auswahlmöglichkeiten.
Ausserdem:
Wenn es weniger obstsorten als comboboxen wären, wäre das von dir erwähnte problem genau der Effekt den ich gerne hätte:
Es gibt irgendwann keine auswahlmöglichkeit mehr und somit wird es unmöglich gemacht eine obstsorte 2x in die comboboxen zu schreiben.
Ich frage mich nur ob es möglich ist, die "items" (das sind ja die auswahlmöglichleiten, oder?) einer combobox zu verändern obwohl dort schon eine Auswahl getroffen wurde?
Und diese Auswahl sollte danach auch noch drinnen stehen (also Äpfel sind in der Combobox1 gewählt. in Combobox2 wird Birnen gewählt, daraufhin stehen Birnen in Combobox1 nicht mehr zur Wahl, aber es werden dort nach wie vor Äpfel angezeigt)
Mit "clear" könnte das problematisch werden glaube ich, oder? Löscht das nicht meine getroffene Wahl?
Ich könnte mir nur vorstellen dass ich den Inhalt als Variable definiere und nach dem löschvorgang wieder "einsetze".
Echt nett dass du dich um mein Problem so annimmst beverly!!!
Anzeige
AW: Comboboxen
16.12.2018 11:35:24
Beverly
Es spielt keine Rolle, wieviel Obstsorten du mehr als ComboBoxen hast - wenn du bei 20 Stück 20mal etwas änderst, ist beim 21. mal nichts mehr vorhanden...
Wenn du Einträge aus der Liste entfernen willst, musst du die Liste jeder ComboBox neu erstellen und dazu muss sie vorher gelöscht werden. Die einzige Möglichkeit die mir im Augenblick einfällt wäre, wenn du zusätzlich zu jeder ComboBox ein Textfeld verwendest und dort die Auswahl entsprechend ausgibst.
https://www.herber.de/bbs/user/126151.xlsm


Anzeige
AW: Comboboxen
16.12.2018 13:19:02
Kurt
ah, jetzt verstehe ich was du meinst.
sorry falls ich das nicht erwähnt habe :-( :
nachdem man sich "umentschieden" hat und eine bereits gewählte (und damit aus der auswahlliste gelöschte) option wieder abgewählt hat, soll diese wieder als mögliche option in der auswahlliste hinzugefügt werden. ich denke das geht mit ".additem".
ich werde das morgen testen und dir auf jeden fall bescheid geben ob es so klappt wie ich denke/hoffe.
lg und schönen sonntag!
und danke für die bsp-datei!
AW: Comboboxen
16.12.2018 15:34:46
Beverly

Option Explicit
Dim lngZeile As Long
Dim varInhalt As Variant
Private Sub UserForm_Initialize()
Rows("1:4").Hidden = False
Fuellen
End Sub
Private Sub cb_P1_Change()
If cb_P1  "" Then
If TextBox1  "" Then
If TextBox1  cb_P1 Then
varInhalt = Application.Match(TextBox1, Range("A1:A4"), 0)
If IsNumeric(varInhalt) Then
Rows(varInhalt).Hidden = False
End If
End If
End If
varInhalt = Application.Match(cb_P1, Range("A1:A4"), 0)
If IsNumeric(varInhalt) Then
Rows(varInhalt).Hidden = True
End If
TextBox1 = cb_P1
Fuellen
End If
End Sub
Private Sub cb_P2_Change()
If cb_P2  "" Then
If TextBox2  "" Then
If TextBox2  cb_P2 Then
varInhalt = Application.Match(TextBox2, Range("A1:A4"), 0)
If IsNumeric(varInhalt) Then
Rows(varInhalt).Hidden = False
End If
End If
End If
varInhalt = Application.Match(cb_P2, Range("A1:A4"), 0)
If IsNumeric(varInhalt) Then
Rows(varInhalt).Hidden = True
End If
TextBox2 = cb_P2
Fuellen
End If
End Sub
Private Sub cb_P3_Change()
If cb_P3  "" Then
If TextBox3  "" Then
If TextBox3  cb_P3 Then
varInhalt = Application.Match(TextBox3, Range("A1:A4"), 0)
If IsNumeric(varInhalt) Then
Rows(varInhalt).Hidden = False
End If
End If
End If
varInhalt = Application.Match(cb_P3, Range("A1:A4"), 0)
If IsNumeric(varInhalt) Then
Rows(varInhalt).Hidden = True
End If
TextBox3 = cb_P3
Fuellen
End If
End Sub
Private Sub UserForm_Terminate()
Rows("1:4").Hidden = False
End Sub
Sub Fuellen()
cb_P1.Clear
cb_P2.Clear
cb_P3.Clear
For lngZeile = 1 To 4
If Rows(lngZeile).Height  0 Then
cb_P1.AddItem Cells(lngZeile, 1)
cb_P2.AddItem Cells(lngZeile, 1)
cb_P3.AddItem Cells(lngZeile, 1)
End If
Next lngZeile
End Sub

Ich empfehle, die Eigenschaft der TextBoxen Locked auf True zu setzen, damit dort keine Änderungen von Hand ausgeführt werden können.


AW: Comboboxen
17.12.2018 14:31:11
Kurt
hallo beverly!
leider klappt das auch nicht so wie gewünscht.
trotzdem vielen lieben dank für deinen versuch mir zu helfen!
(ich hab in jedem fall was gelernt)
ich umgehe jetzt das problem mit folgendem code.
ich habe einen "OK" button der die inhalte der comboboxen verwertet.
dieser prüft jetzt auf fehler (also doppelte einträge).
sicher nicht so elegant gelöst wie ich das wollte, aber es funktioniert.
es sind halt ewig viele zeilen für so viele comboboxen.
falls du einen vorschlag mit schleife hast, wäre das super.
aber ich hab schon fast ein schlechtest gewissen... :-)
lg, kurt
Sub Fehlercheck
If cb_P1.Value = cb_P2.Value Or _
cb_P1.Value = cb_P3.Value Then
cb_P1.SetFocus
GoTo Errormassage
End If
If cb_P2.Value = cb_P1.Value Or _
cb_P2.Value = cb_P3.Value Then
cb_P2.SetFocus
GoTo Errormassage
End If
If cb_P3.Value = cb_P1.Value Or _
cb_P3.Value = cb_P2.Value Then
cb_P3.SetFocus
GoTo Errormassage
End If
Call Fehlercheck_bestanden 'Das ist die normale Prozedur wenn kein Fehler erkannt wurde.
Exit Sub
Errormassage:
MsgBox ("Meine Fehlermeldung..."), vbCritical
Exit Sub
End Sub

AW: Comboboxen
17.12.2018 15:05:55
Beverly
Hi,
WAS klappt bei dir nicht wie gewünscht? Der Code macht doch genau das was du willst: die ComboBoxen werden immer um die Inhalte reduziert die bereits in anderen ausgewählt sind und wird anstelle eines bereits ausgewählten ein anderer ausgewählt, erscheint der bereits aus- und wieder abgewählte wieder in allen Listen.
https://www.herber.de/bbs/user/126176.xlsm


AW: Comboboxen
18.12.2018 08:58:22
Kurt
du gibst nicht auf - das gefällt mir! :-)
dank deiner hilfe hab ich es jetzt tatsächlich geschafft es genau so zu gestalten wie ich es mir vorgestellt hab.
ehrlich gesagt hat mich die textbox gestört, aber ich konnte das (zumindest optisch) umgehen.
siehe...
https://www.herber.de/bbs/user/126180.xlsm
danke beverly!!!!!
was haltest du davon?
Wie man etwas gestaltet...
18.12.2018 10:09:19
Beverly
...ist immer Ansichtssache - wichtig ist der Code im Hintergrund... ;-)


299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige