在单元格中将日期格式化为 yyyy-mm-dd

4
在 [excel-vba] 中,我正试图从一个 UserForm 文本框格式化文本,将其格式化为 yyyy-mm-dd 并使用以下代码将其输入到单元格中:
Private Sub GenerateButton_Click()
    Worksheets("Sheet1").Activate

    Sheet1.Unprotect
    Dim startTime, endTime, startDate
    startTime = t_daylasthour.Text
    endTime = t_daylasthour.Text
    startDate = t_startdate.Value

    Dim counter As Integer
    counter = 1

    Do
        Set field = ActiveWorkbook.Sheets("Sheet1").Cells(counter + 1, 1)
        field.Value = Format(t_startdate.Text, "yyyy-mm-dd") 
        counter = counter + 1
    Loop While counter < 10

End Sub

单元格中的输出始终以yyyy/mm/dd的形式呈现。我在代码中尝试了其他格式,例如yyyy-mm-dd,它能正常工作。但每次我尝试使用上面代码中列出的格式时,它都不能正常工作。
对于我的错误有什么想法吗?
1个回答

3

值以文本形式输入,但单元格的常规格式将其转换为真正的日期值。最好保留该真实日期值,并更改单元格的Range.NumberFormat属性以按您想要的方式显示日期。

Do
    Set field = ActiveWorkbook.Sheets("Sheet1").Cells(counter + 1, 1)
    field = CDate(t_startdate.Text) 
    field.NUMBERFORMAT = "yyyy-mm-dd"
    counter = counter + 1
Loop While counter < 10

或者,在将 Range.Value 属性 设为类似日期的文本之前,将单元格的 Range.NumberFormat 属性 设置为文本而不是常规。

Do
    Set field = ActiveWorkbook.Sheets("Sheet1").Cells(counter + 1, 1)
    field.NUMBERFORMAT = "@"
    field.Value = Format(t_startdate.Text, "yyyy-mm-dd") 
    counter = counter + 1
Loop While counter < 10

谢谢!我使用了第二种方法,因为我想要将文本追加到单元格中的日期文本上,而且它效果很好。 - gtdevel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接