2017-06-02 65 views
-1

用戶窗體中的文本框具有下面的vba,以便將日期粘貼到工作表上的D列中。我需要粘貼日期的格式如下:「YYYY/MM/DD」正好按照這個順序。更改文本框中的日期格式

但是目前下面的代碼粘貼日期「DD/MM/YYYY」。我錯過了什麼嗎?謝謝

.Cells(lRow, 4).Value = Me.txtDate.Value 
    .Cells(lRow, 4).NumberFormat = "YYYY/MM/DD" 
+0

'.Cells(lRow,4)。值=格式(Me.txtDate.Value,「yyyy/mm/dd」)'也可以直接在單元格中設置格式,但格式/自定義/ YYYY/MM/DD。 –

+0

@KostasK。數字格式不會日期格式的字符串,Excel不會將其識別爲日期。 –

+0

@馬特杯你說得對。完全誤讀它。 –

回答

1

一個文本框包含一個String。日期格式的單元格包含Date(如果您希望Excel將其理解爲日期)。您錯過了轉換。

Dim dateValue As Date 
dateValue = ToDate(Me.txtDate.Value) 

.Cells(lRow, 4).Value = dateValue 
.Cells(lRow, 4).NumberFormat = "yyyy/MM/dd" 

ToDate將是一個函數,它接受一個String並返回一個Date。有很多方法可以解決這個問題,並且您需要處理提供的字符串不是有效日期的情況。

這裏的一個方式:

Private Function ToDate(ByVal value As String) As Date 
    ToDate = DateValue(value) 'raises error 13 "type mismatch" if invalid 
End Function 

如果這是不夠好,只需要在一個地方,那麼你可以內嵌它:

.Cells(lRow, 4).Value = DateValue(Me.txtDate.Value) 
.Cells(lRow, 4).NumberFormat = "yyyy/MM/dd" 
+0

謝謝馬特,它的工作原理。 – thankseveryone