Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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
Antworten 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
Antworten 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
Antworten 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
Antworten Top
#6
Hallo Carsten,
(15.03.2017, 09: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
Antworten Top
#7
Hallo Stefan,

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


Gruß Carsten
Antworten Top


Gehe zu:


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