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

Posted

技术标签:

【中文标题】在单元格中将日期格式化为 yyyy-mm-dd【英文标题】:Formatting date to yyyy-mm-dd in cell 【发布时间】:2016-09-03 13:44:00 【问题描述】:

在 [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】:

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

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.NumberFormat property 设置为 Text 而不是 General before 将 Range.Value property 设置为 text-that-looks-like-a-date。

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

【讨论】:

谢谢!我使用了第二种方法,因为我想附加到单元格中的日期文本并且效果很好。

以上是关于在单元格中将日期格式化为 yyyy-mm-dd的主要内容,如果未能解决你的问题,请参考以下文章

在 Redshift 中将日期时间列格式化为 ISO 日期时间

如何把yyyy-mm-dd日期格式转化成yyyymmdd格式

Excel 如何将YYYY-MM-DD日期格式改为YYYYMMDD格式

请问在excel中如何把数值YYYYMMDD转换为日期YYYY-MM-DD呢?如果直接设置单元格格式为日期,只能显示一连串

如何在presto sql中将字符串'yyyy-mm-dd'转换为日期格式

在 Excel 中将月份数从完整日期单元格转换为文本月份