Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Wenn Dann Bedingung in Combobox

Wenn Dann Bedingung in Combobox
25.05.2022 15:37:07
Christine
Hallo zusammen,
für ein Modul an der Uni muss ich gemeinsam mit einer Gruppe ein VBA Programm schreiben. Die Aufgabe besteht darin einen Spieler für das Brettspiel "Auf Achse" zu programmieren. Bei dem Spiel geht es darum, dass Transportaufträge bearbeitet werden müssen. Diese Aufträge wollen wir mittels eines Drop Down Menüs auswählen. Die entsprechende User Form mit Combobox habe ich dafür schon erstellt. Folgender Code ist demnach schon fertiggestellt:
'Auswahl der gezogenen Handuaftraege ueber ein Drop Down Menue. Sobald ein Auftrag ausgewaehlt wurde, soll dieser in der zweiten bzw. dritten Auswahl nicht mehr verfuegbar sein.

Private Sub UserForm_Initialize()
UserForm1_Handauftraege.Auftrag_1.RowSource = "Transportauftraege!A2:A55"
UserForm1_Handauftraege.Auftrag_2.RowSource = "Transportauftraege!A2:A55"
UserForm1_Handauftraege.Auftrag_3.RowSource = "Transportauftraege!A2:A55"
End Sub
'Uebertragung der Handauftraege in die vorgesehenen Zellen im Arbeitsblatt "Spielfeld" sowie Schliessen der UserForm beim Klicken des Buttons "Uebernehmen"

Private Sub CommandButton1_Click()
Worksheets("Spielfeld").Cells(18, 2).Value = UserForm1_Handauftraege.Auftrag_1.Value
Worksheets("Spielfeld").Cells(19, 2).Value = UserForm1_Handauftraege.Auftrag_2.Value
Worksheets("Spielfeld").Cells(20, 2).Value = UserForm1_Handauftraege.Auftrag_3.Value
Unload UserForm1_Handauftraege
End Sub
Die erforderlichen Informationen der Transportaufträge werden aus einem anderen Arbeitsblatt (Transportauftraege) gezogen. Da nacheinander drei Aufträge ausgewählt werden müssen, möchte ich gerne die Funktion einbauen, dass sobald ein erster Auftrag ausgewählt wurde, dieser im zweiten Drop Down bzw. Combobox nicht mehr auszuwählen ist. Geht das mit einer Wenn Dann Bedingung? Ich habe bisher leider keine Lösung gefunden und bin für jede Hilfe sehr dankbar!!
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Dann Bedingung in Combobox
25.05.2022 16:00:10
Daniel
Hi
wenn du einer Combobox Inhalte über RowSource zuweist, können diese Inhalte dann nur noch über Änderungen in der Tabelle verändert werden.
wenn du direkt in der Combobox ändern willst, musst du die Combobox über .AddItem befüllen oder die Inhalte als Array in die List-Eigenschaft schreiben.
ich würde hier das Befüllen der Combobox erst im DropButton_Click-Event machen (also wenn der Anwender in die Combobox reingeht), dann kannst du nämlich auch gleich schauen, was in den andern Comboboxen schon ausgewählt wurde und das dann rauschmeißen:
also im DropButton_Click-Makro oder im ENTER-Makro dann folgendes:

With Auftrag_1
.List = Sheets("Transportauftraege").Range("A2:A55").value
for i = .ListCount - 1 to 0 step -1
if .List(i) = Auftrag_2.value or .list(i) = Auftrag_3.value then .RemoveItem i
next
End with
das gleiche dann für die beiden anderne Comboboxen.
Gruß Daniel
Anzeige
Alternative mit MultiSelect Listbox
25.05.2022 16:19:17
ChrisL
Hi Christine
Die Frage zur ComboBox hat dir bereits Daniel beantwortet. Übrigens MatchRequired=True nicht vergessen.
Selber würde ich eher auf eine MultiSelect Lösung tendieren. Finde ich bei der Anzahl Einträge recht übersichtlich und man kann die Auswahl nachträglich auch leicht wieder korrigieren/löschen.
https://www.herber.de/bbs/user/153274.xlsm
cu
Chris

Private Sub CommandButton1_Click()
Dim arListe(1 To 3) As Variant
Dim iZaehler As Integer
Dim i As Integer
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
iZaehler = iZaehler + 1
If iZaehler > 3 Then Exit For
arListe(iZaehler) = .List(i)
End If
Next i
End With
If iZaehler  3 Then
MsgBox "Es müssen 3 Einträge ausgewählt werden.", vbCritical
Else
Worksheets("Transportauftraege").Range("B18:B20") = Application.Transpose(arListe)
Unload Me
End If
End Sub

Private Sub CommandButton2_Click()
Worksheets("Transportauftraege").Range("B18:B20").ClearContents
Unload Me
End Sub

Private Sub UserForm_Initialize()
Dim i As Integer
For i = 0 To ListBox1.ListCount - 1
If WorksheetFunction.CountIf(Worksheets("Transportauftraege").Range("B18:B20"), ListBox1.List(i)) Then _
ListBox1.Selected(i) = True
Next i
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige