Comboboxen untereinander füllen
#1
Hallo Zusammen,

habe mehrere Comboboxen die ich per Tabelleninhalt gefüllt habe.
Jetzt möchte ich über die Auswahl einer Liste die anderen Comboboxen automatisch befüllen.
Genauer, ist bei A Listindex= 1 ausgewählt, soll er bei B, C, D, E auch mit Listindex = 1 füllen.

Habe bisher:


Private Sub cmbMStNr_Click()
Select Case Me.cmbMStNr.ListIndex
Case 0: cmbOrt.ListIndex = 0 And cmbStraße.ListIndex = 0
Das And wird leider ignoriert...

Case 1: cmbOrt.ListIndex = 1
Case 2: cmbOrt.ListIndex = 2
Case 3: cmbOrt.ListIndex = 3
Case 4: cmbOrt.ListIndex = 4
Case 5: cmbOrt.ListIndex = 5
Case 6: cmbOrt.ListIndex = 6
Case 7: cmbOrt.ListIndex = 7
Case 8: cmbOrt.ListIndex = 8
Case 9: cmbOrt.ListIndex = 9

Case Else: MsgBox "Das darf nicht passieren!", , p_cstrMsgTitel
End Select

End Sub

Idealerweise ginge es bei allen gleich, Egal ob die erste Auswahl bei A, B, C, oder D erfolgt.

Muss ich die obere Lösung für alle Comboboxen A, B, C und D neu schreiben oder geht es auch eleganter?

Vielen Dank im Voraus
Top
#2
Hallo Blub,

wenn ich Dich recht verstanden habe, ungetestet so:


Code:
Private Sub cmbMStNr_Click()
   SetIndex (Me.cmbMStNr.ListIndex)
End Sub

Private Sub cmbOrt_Click()
   SetIndex (Me.cmbOrt.ListIndex)
End Sub

Private Sub cmbStraße_Click()
   SetIndex (Me.cmbStraße.ListIndex)
End Sub

Private Sub SetIndex(ByVal Value As Long)
   Me.cmbOrt.ListIndex = Value
   Me.cmbStraße.ListIndex = Value
   Me.cmbMStNr.ListIndex = Value
End Sub


Gruß Carsten
[-] Folgende(r) 1 Nutzer sagt Danke an DbSam für diesen Beitrag:
  • soldblub
Top
#3
Auch Hallo,

oder so?

Code:
Private Sub cmbMStNr_Click()
    Dim vntComboboxenArray As Variant
    Dim lngC As Long
    
    vntComboboxenArray = Array(cmbOrt, cmbStraße)
    Select Case Me.cmbMStNr.ListIndex
        Case 0 To 9
        For lngC = 0 To UBound(vntComboboxenArray)
            Me.Controls(vntComboboxenArray(lngC).Name).ListIndex = Me.cmbMStNr.ListIndex
        Next lngC
    End Select


'Case 0: cmbOrt.ListIndex = 0 And cmbStraße.ListIndex = 0
''Das And wird leider ignoriert...
'
'Case 1: cmbOrt.ListIndex = 1
'Case 2: cmbOrt.ListIndex = 2
'Case 3: cmbOrt.ListIndex = 3
'Case 4: cmbOrt.ListIndex = 4
'Case 5: cmbOrt.ListIndex = 5
'Case 6: cmbOrt.ListIndex = 6
'Case 7: cmbOrt.ListIndex = 7
'Case 8: cmbOrt.ListIndex = 8
'Case 9: cmbOrt.ListIndex = 9
'
'Case Else: MsgBox "Das darf nicht passieren!", , p_cstrMsgTitel
'End Select
    MsgBox cmbOrt.ListIndex  ' nur zum Test
End Sub
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • soldblub
Top
#4
Auch Hallo return,

hier fallen mir nur ganz wenige Gründe ein, warum man das 'Select Case'-Konstrukt drumherum benötigen würde:
[
Bild bitte so als Datei hochladen: Klick mich!
]

Außerdem habe ich die Frage so verstanden, dass er einen Wert in irgendeiner Combobox auswählen will und dann dieser Index bei den anderen Boxen gesetzt wird (, warum auch immer).


Gruß Carsten
Top
#5
Ihr seid Spitze,

ich habe Carstens Variante umgesetzt,

sie erfüllt alles was ich brauche und ist vor allem leicht verständlich für einen Anfänger wie mich , und in ein paar Monaten auch noch nachvollziehbar.

Vielen Dank an Alle
Top
#6
Hallo Carsten,
(15.03.2017, 10:35)DbSam schrieb: hier fallen mir nur ganz wenige Gründe ein, warum man das 'Select Case'-Konstrukt drumherum benötigen würde:

Außerdem habe ich die Frage so verstanden, dass er einen Wert in irgendeiner Combobox auswählen will und dann dieser Index bei den anderen Boxen gesetzt wird (, warum auch immer).

ich vermute mal in der ComboBox cmbMStr gibt es mehr als 10 Einträge und in einer der anderen sind es nur 10 und es käme in diesem Fall zu einem Fehler, wenn ListIndex größer 9 ist.
Gruß Stefan
Win 10 / Office 2016
Top
#7
Hallo Stefan,

das wäre einer der zwei, drei Gründe ...   :)


Gruß Carsten
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste