2017-06-02 68 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