用户表单中的文本框具有下面的vba,以便将日期粘贴到我的工作表上的D列中。我需要粘贴日期的格式如下:“YYYY / MM / DD”完全按此顺序。
但是,目前下面的代码粘贴日期“DD / MM / YYYY”。我错过了什么吗?谢谢
.Cells(lRow, 4).Value = Me.txtDate.Value
.Cells(lRow, 4).NumberFormat = "YYYY/MM/DD"
答案 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"