あなたは年を月で分割し、それを1日で割っています。それはあなたの細胞が得ている価値です。
実際にの日付を作成してください。
.Cells(lRow, 2).Value = DateSerial(cboYear, cboMonth, cboDay)
そしてNumberFormat
を使用して、あなたが望む任意の方法を日付フォーマット:
.Cells(lRow, 2).NumberFormat = "yyyy/MM/dd"
DateSerial
は、整数値を期待しています。あなたのcboMonth
が文字列(月の名前)が含まれている場合、あなたはそれのために少し難しい作業する必要がある - 最も簡単なだけでキー付きのコレクションを使用することがおそらくある - .Add
コレクションに整数をする際に、文字列のキーを指定します。
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
を
そして、あなたは簡単な検索を持っている:
Dim monthId As Integer
monthId = months(cboMonth)
だからあなたDateSerial
は次のようになります。
.Cells(lRow, 2).Value = DateSerial(cboYear, monthId, cboDay)
Protip:「動作しない」非常に良いワシントン州ではありませんあなたのコードが何をしているのかを説明する。 "予期しないゴミを生む"より正確になります。一般的に、あなたは "私のコードは動作しません" SOの質問ではなく、代わりにあなたが得ているものを記述する*ガーベッジ出力、ランタイムエラーなど –
あなたは、 '2017/02/29'や' 2017/04/31'を選択できないようにしますか?あなたにこれを提供するカレンダーコントロールを使用したくない特定の理由はありますか? – FreeMan