更改文本框中的日期格式

时间:2017-06-02 15:46:47

标签: excel vba

用户表单中的文本框具有下面的vba,以便将日期粘贴到我的工作表上的D列中。我需要粘贴日期的格式如下:“YYYY / MM / DD”完全按此顺序。

但是,目前下面的代码粘贴日期“DD / MM / YYYY”。我错过了什么吗?谢谢

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

1 个答案:

答案 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"