2016-05-31 13 views
1

(verengte bei enter link description here von meiner breiteren Frage nach unten als in meta beraten.)Einstellwert einer Userform Combobox

ich eine Userform habe. Auf diesem Benutzerformular befinden sich mehrere Kombinationsfelder für Auswahljahr, Monat und Tag. Die Tages-Combobox wird mit Zahlen von bis zu 28, 29, 30 oder 31 gefüllt, je nachdem, welches Jahr und welcher Monat ausgewählt wurde. Um zu vermeiden, Dinge wie den 31. Februar auszuwählen, möchte ich überprüfen, ob der ausgewählte Tagwert das Maximum für diesen Monat überschreitet, und ihn entsprechend reduzieren. Im Moment habe ich diese Optionen ausprobiert:

If Me.Combo_Day.Value > iMaxDate And iMonthNo > 0 And Not Me.Combo_Day.Value = "" Then Me.Combo_Day.Value = Me.Combo_Day.List(iMaxDate - 1) 

und

If Me.Combo_Day.Value > iMaxDate And iMonthNo > 0 And Not Me.Combo_Day.Value = "" Then Me.Combo_Day.Value = iMaxDate 

Keiner von ihnen arbeiten; Jedes Mal, wenn diese Zeile geparst wird, erhalte ich einen 380-Fehler mit der Erklärung "Die Value-Eigenschaft konnte nicht gesetzt werden. Ungültiger Eigenschaftswert."

Ich habe versucht, beide .Text und .Value zu ändern, und keiner scheint viel Unterschied zu machen. Wie ändere ich den ausgewählten Wert in einer Combobox?

Antwort

1

Bearbeiten auf ein Missverständnis von reqs:

Mein Fehler, falsch verstand ich den Original-Beitrag. Wenn die Tage in numerischer Reihenfolge eingestellt sind, können Sie tatsächlich die ListIndex verwenden (denken Sie daran, dass sie mit Null beginnt, also müssen Sie 1 subtrahieren). Es würde wie folgt aussehen:

Me.Combo_Day.ListIndex = (iMaxDate - 1)

funktioniert das?

+0

Danke - aber, der Scheck funktioniert gut. Es wird in diesem Stadium nicht zu einem Datum kombiniert, also überprüft es einfach den '.Value 'der Tages-Combobox mit dem Maximum, das für diesen Monat angegeben wurde. Das Problem tritt auf, wenn ich versuche, den ausgewählten Wert der Combobox auf den höchsten Wert zu setzen, der in diesem Monat verfügbar ist. Ich hatte große Hoffnungen, dass ich einen Listenindex verwenden könnte, aber ohne Erfolg. Irgendwelche Gedanken? –

+1

@AndrewPerry Meine Schuld, ich habe den ursprünglichen Beitrag missverstanden. Wenn die Tage in numerischer Reihenfolge stehen, können Sie tatsächlich den 'ListIndex' verwenden (denken Sie daran, dass er mit Null beginnt, also müssen Sie 1 subtrahieren). Es würde so aussehen: 'Me.Combo_Day.ListIndex = (iMaxDate - 1)' Funktioniert das? – user3561813

+0

Aaah, das Beispiel, das ich kopiert habe, benutzte 'Me.Combo_Day.Value = Me.Combo_Day.ListIndex (iMaxDate-1)'. Kein Wunder, dass es nicht funktioniert hat! Vielen Dank, ich werde es versuchen, wenn ich morgen ins Büro komme. –

Verwandte Themen