Sie teilen das Jahr durch den Monat und teilen das dann durch den Tag. Das ist der Wert, den deine Zelle bekommt.
Erstellen Sie stattdessen ein aktuelles Datum.
.Cells(lRow, 2).Value = DateSerial(cboYear, cboMonth, cboDay)
Und dann Format, das jede mögliche Weise, datieren Sie es wünschen, mit NumberFormat
:
.Cells(lRow, 2).NumberFormat = "yyyy/MM/dd"
DateSerial
erwartet ganzzahlige Werte. Wenn Ihre cboMonth
Strings (Monatsnamen) enthält, dann müssen Sie es ein bisschen härter arbeiten - die einfachste ist wahrscheinlich nur eine Schlüssel Sammlung verwenden - einen String-Schlüssel angeben, wenn .Add
die ganzen Zahlen der Sammlung ing:
Static months As Collection
If months Is Nothing Then
Set months = New Collection
With months
.Add 1, "January"
.Add 2, "February"
.Add 3, "March"
'...
.Add 12, "December"
End With
End If
Und dann haben Sie eine einfache Lookup:
Dim monthId As Integer
monthId = months(cboMonth)
So Ihre DateSerial
wäre:
.Cells(lRow, 2).Value = DateSerial(cboYear, monthId, cboDay)
Protip: "funktioniert nicht" wa nicht sehr gut ist, y um zu beschreiben, was dein Code macht. "produziert unerwarteten Müll" wäre genauer. Im Allgemeinen möchten Sie vermeiden, dass "mein Code nicht funktioniert" in SO-Fragen und stattdessen * beschreiben *, was Sie erhalten - Müllausgabe, Laufzeitfehler usw. –
Haben Sie eine Datenüberprüfung? hindert mich daran, '2017/02/29' oder' 2017/04/31' auszuwählen? Gibt es einen bestimmten Grund, warum Sie kein Kalender-Steuerelement verwenden möchten, das dies für Sie bereitstellt? – FreeMan