Hallo und schönen Sonntagabend,
ich möchte aus einem Kombinationsfeld (cboAuswahlfeld) die aktivierten Einträge verketten und in ein Textfeld (txtAuswahlfeld) schreiben, sobald in dem Kombinationsfeld Änderungen vorgenommen werden.
Private Sub cboAuswahlfeld_Change()
Dim varEintrag As Variant
Dim strAusgewaehlteEintraege As String
Dim blnErsterEintrag As Boolean
strAusgewaehlteEintraege = ""
If Me!cboAuwahlfeld.ItemsSelected.Count > 0 Then
blnErsterEintrag = True
For Each varEintrag In Me!cboAuwahlfeld.ItemsSelected
If blnErsterEintrag Then
strAusgewaehlteEintraege = Me!cboAuwahlfeld.ItemData(varEintrag)
blnErsterEintrag = False
Else
strAusgewaehlteEintraege = strAusgewaehlteEintraege & "," & Me!cboAuwahlfeld.ItemData(varEintrag)
End If
Next varEintrag
End If
Me!txtAuswahlfeld.Value = strAusgewaehlteEintraege
End Sub
Obwohl die Anzahl der ausgewählten Einträge korrekt angezeigt wird (Debug-Mode), wird die FOR ... NEXT- Schleife nicht durchlaufen.
Hat jemand von Euch eine Idee, woran das liegen könnte, denn ich bin jetzt seit knapp 2 Tagen auf der Fehlersuche, habe x-Varianten ausprobiert und mit meinem Latein am Ende.
Vielen Dank im Voraus.
Schöne Grüße,
Christian
Hallo!
Ist das eine Combobox mit einem MultiValue-Feld?
Dann sollte glaube ich Value ein Array der Auswahl liefern.
Gruß
Josef
Hallo Josef,
ja, ist es.
Danke für den Tipp, allerdings weiss ich nicht, wie ich die Value-Eigenschaft bei den selektierten Einträgen nutzen könnte.
Ein Ersetzen der FOR...NEXT-Schleife (zu Testzwecken) durch eine Schleife der Form
For intI = 0 To Me!cboAuswahlfeld.ItemsSelected - 1
MsgBox (Me!cboAuswahlfeld.ItemsSelected.Item(intI))
Next intI
liefert lediglich die Positionen der aktivierten Einträge im Kombinationsfeld. Da Item(intI) keine Value-Eigenschaft besitzt, nützt mir das natürlich wenig.
Ich bin für jeden weiteren Tipp dankbar.
Christian
Konnte das Problem über den Schleifendurchlauf der markierten Einträge in Verbindung mit einer Abfrage über die ID der Referenztabelle lösen.
Schöne Grüße,
Christian
Hallo!
Zitat... allerdings weiss ich nicht, wie ich die Value-Eigenschaft bei den selektierten Einträgen nutzen könnte.
Luftcode:
strAusgewaehlteEintraege = Join(Me!cboAuswahlfeld.Value, ",")
ZitatKonnte das Problem über den Schleifendurchlauf der markierten Einträge in Verbindung mit einer Abfrage über die ID der Referenztabelle lösen.
Das hast du aber nicht über ItemsSelected der Combobox umgesetzt, oder?
Gruß
Josef
Hallo Josef,
danke für den Luftcode, allerdings bildet der nur einen String aus den nummerischen Verweisen, was mir leider nicht weiterhilft.
Bezüglich Deiner Frage:
Doch, ich habe die Schleife über alle selektierten Einträge laufen lassen und da die dort gespeicherte Position der ausgewählten Einträge identisch (bei einer Korrektur um +1, da ja "Null"-basierend) mit dem Primärschlüssel in der Referenztabelle sind, nach diesem abgefragt.
Ist nicht schön oder elegant, aber es erfüllt seinen Zweck und das ist das Einzige was für mich zählt.
Schöne Grüße,
Christian
Hallo!
Jetzt fällt es mir erst auf: du reagierst auf das Change-Ereignis und da ist die Combobox noch aufgeklappt. Daher steht ItemsSelected zur Verfügung. Im zusammengeklappten Zustand ist die Listbox-Funktionalität nämlich weg.
Dann sollte auch so etwas funktionieren:
For i = 0 To .ItemsSelected.Count - 1
Debug.Print i, .ItemsSelected(i), .Column(1, .ItemsSelected(i))
' ! Column(0) = Spalte mit Checkbox
Next
eventuell reicht auch das bereits:
strAusgewaehlteEintraege = Me!cboAuswahlfeld.Text
Gruß
Josef