在单元格中将日期格式化为 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呢?如果直接设置单元格格式为日期,只能显示一连串