Hallo zusammen,
Ich habe eine Userform mit einer ComboBox.
Die ComboBox wird mit einem zweispaltigen Array gefüllt. (.ColumnCount = 2)
10 | Apfel
20 | Birne
30 | Zitrone
Der Value der ComboBox soll aus der ersten Spalte kommen. (.BoundColumn = 1)
Der anzuzeigende Text soll aus der zweiten Spalte kommen. (.TextColumn = 2)
Der Valuewert bzw. die erste Spalte soll innerhalb der ComboBox ausgeblendet werden.
Daher wird die Breite der ersten Spalte auf 0 gesetzt. (.ColumnWidths = "0;20")
Soweit funktioniert alles:
Das heißt, Ich wähle in der ComboBox einen Eintrag per Maus z.B. Birne aus und erhalte als Rückgabewert 20.
Nun Versuche Ich der ComboBox einen Value per VBA zuzuweisen, damit "Apfel" ausgewählt wird: (.Value = 10)
Daraufhin erhalte Ich einen Laufzeitfehler '380':
"Eigenschaft Value konnte nicht gesetzt werden. Ungültiger Eigenschaftenwert."
Mit .ListIndex kann man nur über den Index die jeweilige Zeile ansprechen. (.ListIndex = 0)
Für den aktuellen Anwendungsfall soll es jedoch ermöglicht werden, einen gültigen Value Wert (10,20,30) aus der ersten Spalte der ComboBox zuzuweisen.
Wie kann Ich der ComboBox einen Value aus der ersten "unsichtbaren" Spalte übergeben?
Option Explicit
Private Sub UserForm_Initialize()
Dim varArray(2, 1) As Variant
Me.ComboBox1.ColumnCount = 2
Me.ComboBox1.BoundColumn = 1
Me.ComboBox1.TextColumn = 2
Me.ComboBox1.ColumnWidths = "0;20"
varArray(0, 0) = 10
varArray(1, 0) = 20
varArray(2, 0) = 30
varArray(0, 1) = "Apfel"
varArray(1, 1) = "Birne"
varArray(2, 1) = "Zitrone"
Me.ComboBox1.List = varArray
Me.ComboBox1.Value = 10 '<- führt zu einem Laufzeitfehler '308'
End Sub
Private Sub ComboBox1_Change()
MsgBox ComboBox1.Value & ""
End Sub
|