Hallo liebe Excel-Freunde,
ich stehe hier vor einem Problem, das mich verzweifeln lässt:
In einer Userform verwalte ich Kurse, wo jeweils max. 10 Personen teilnehmen können.
Nun möchte ich in der "Listbox1" (wo die Kurse aufgelistet sind, Datenherkunft ist die Tabelle "Kurse", Spalte "B" [Kursbezeichnung]) auf einen Kurs klicken können und folglich in den mehrspaltigen Comboboxen mit den Bezeichnungen "Combobox1" bis "Combobox10" (wo die Teilnehmer ausgewählt werden können, Datenherkunft ist die Tabelle "Kunden", Spalte "B" [Vorname], Spalte "C" [Nachname] und Spalte "G" [Wohnort]).
Sobald in einer Combobox ein Teilnehmer ausgewählt wird, darf in den anderen Comboboxen der bereits ausgewählte Teilnehmer nicht mehr vorkommen, um Buchungsfehler zu vermeiden.
Hier ein Beispiel:
Teilnehmerliste in Tabelle "Kunden", Spalten "B / C / G":
VORNAME NACHNAME WOHNORT
Vorname_1 / Nachname_1 / Wohnort_1
Vorname_2 / Nachname_2 / Wohnort_2
Vorname_3 / Nachname_3 / Wohnort_3
Vorname_4 / Nachname_4 / Wohnort_4
Vorname_5 / Nachname_5 / Wohnort_5
Vorname_6 / Nachname_6 / Wohnort_6
Vorname_7 / Nachname_7 / Wohnort_7
Vorname_8 / Nachname_8 / Wohnort_8
Vorname_9 / Nachname_9 / Wohnort_9
Vorname_10 / Nachname_10 / Wohnort_10
Wird nun z.B.
- in der Combobox1 der Teilnehmer_3 ausgewählt, so sollen in der Combobox2 alle Teilnehmer aufgelistet werden AUSSER Teilnehmer_3.
- Wählt man jetzt noch in der Combobox2 den Teilnehmer_5 aus, so sollen in der Combobox3 alle Teilnehmer aufgelistet werden AUSSER Teilnehmer_3 und Teilnehmer_5, da diese ja bereits teilnehmen...
- usw.
Kann mir da jemand dabei helfen?
Danke im Voraus für Eure Mühe!
Lg, Gustav
Hallo Gustav,
Zeige uns doch bitte ein Bild des Beziehungsfensters (alle Tabellen mit allen Feldern
müssen zu sehen sein).
Da stimmt höchstwahrscheinlich dein Datenmodell noch nicht.
Normal braucht's dazu nur ein einziges Kombi, das sich automatisch "verkürzt".
gruss ekkehard
Hy Beaker s.a.,
mein Problem habe ich in Excel, nicht in Access... ;)
Aber danke trotzdem für'a Engagement! 8)
Lg, Gustav
Sorry, war bei mir nicht angekommen.
Bei Excel kann ich allerdings nicht helfen.
Hallo liebe Excel-Freaks ;)
Na, wer sagt's denn, auch ein blindes Huhn findet mal ein Korn! ;D
Hab endlich die Lösung nach tagelangem herumtüftlen, und zwar so...! 8)
Private Sub UserForm_Initialize()
Dim i As Long
Dim j As Integer
Dim k As Integer
Dim Wert1(10) As String
Dim Werte(10) As String
Worksheets("Kunden").Activate
letztezeileKunde = Worksheets("Kunden").Cells(Rows.Count, 2).End(xlUp).Row
letztezeileKurs = Worksheets("Kurse").Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To letztezeileKurs
If Worksheets("Kurse").Cells(i, 2) > 0 Then UserForm1.ListBox1.AddItem Worksheets("Kurse").Cells(i, 2)
Next i
Call SortListBox
Call KursAuswählen
End Sub
Das Change-Ereignis der Comboboxen 1 - 9 rufen das Makro "Sichtbar" auf, also... Call Sichtbar
Das Makro "Sichtbar" im Modul "Modul1":
Sub Sichtbar()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim Wert1(10) As String
Dim Werte(10) As String
Dim vorhku(10) As Variant
Dim flag As Integer
For i = 1 To 10
With UserForm1
If .Controls("Combobox" & i).Visible = False Then Exit Sub
If .Controls("Combobox" & i).Value <> "" Then
If 1 = 10 Then Exit Sub
.Controls("Label" & i + 1).Visible = True
.Controls("Combobox" & i + 1).Visible = True
End If
End With
Next i
End Sub
Das Change-Ereignis der Combobox 10 (CommandButton 1 = "Ok" zur Bestätigung) hingegen setzt den Fokus auf den "Ok"-Bestätigungs-Button UserForm1.CommandButton1.SetFocus
Das Enter-Ereignis der Comboboxen 2 - 10 rufen das Makro "ComboBoxenFuellenGefiltert" auf, also... Call ComboBoxenFuellenGefiltert
Das Makro "ComboBoxenFuellenGefiltert" im Modul 1 (womit ich meine Probleme hatte ;D ):
Sub ComboBoxenFuellenGefiltert()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim vorhku(10) As Variant
Dim flag As Integer
For i = 1 To 10
If UserForm1.Controls("Combobox" & i).Value = "" Then Exit For
vorhku(i) = UserForm1.Controls("Combobox" & i).Value
Next i
For j = 1 To letztezeileKunde - 1
flag = 0
For k = 1 To i - 1
If vorhku(k) = Worksheets("Kunden").Cells(j + 1, 1) Then flag = 1: Exit For
Next k
With UserForm1.Controls("Combobox" & i)
.ColumnCount = 4
If flag = 0 Then
.AddItem
.List(.ListCount - 1, 0) = Worksheets("Kunden").Cells(j + 1, 1)
.List(.ListCount - 1, 1) = Worksheets("Kunden").Cells(j + 1, 2)
.List(.ListCount - 1, 2) = Worksheets("Kunden").Cells(j + 1, 3)
.List(.ListCount - 1, 3) = Worksheets("Kunden").Cells(j + 1, 7)
End If
End With
Next j
End Sub
Das Makro "KursAuswählen" im Modul 1:
Sub KursAuswählen()
Dim m As Integer
If UserForm1.ListBox1.ListIndex = -1 Then
m = MsgBox("Bitte wählen Sie einen Kurs aus der Liste!", vbExclamation + vbOKOnly, "Kurs auswählen")
UserForm1.ListBox1.SetFocus
Exit Sub
End If
Kursname = UserForm1.ListBox1.Value
Call AlleKundenEinlesen
End Sub
Das Makro "KursAuswählen" im Modul 1:
Sub AlleKundenEinlesen()
If UserForm1.ListBox1.ListIndex = -1 Then Exit Sub
UserForm1.Label1.Visible = True
UserForm1.Combobox1.Visible = True
For i = 2 To letztezeileKunde
If Worksheets("Kunden").Cells(i, 2) <> "" Then
With UserForm1.Controls("Combobox1")
.ColumnCount = 4
.AddItem
.List(.ListCount - 1, 0) = Worksheets("Kunden").Cells(i, 1)
.List(.ListCount - 1, 1) = Worksheets("Kunden").Cells(i, 2)
.List(.ListCount - 1, 2) = Worksheets("Kunden").Cells(i, 3)
.List(.ListCount - 1, 3) = Worksheets("Kunden").Cells(i, 7)
End With
End If
Next i
End Sub
Das Makro "SortListBox" poste ich hier jetzt nicht, da ich es gegoogelt und angepasst habe!
Ich hoffe dem Einen oder Anderen ist damit vielleicht geholfen!
Lg aus dem heute verregneten Südtirol und viel Spaß, sollte es jemand nachbasteln und ausprobieren wollen! :D
Gustav