在单元格中格式化date为yyyy-mm-dd

在[excel-vba]中,我尝试从UserForm文本框中格式化文本,将其格式化为yyyy-mm-dd,并用下面的代码将其input到单元格中:

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的forms出现。 我在我的代码中尝试任何其他格式似乎工作。 我尝试了YYYY – MM – DD例如,它的工作,但每次我尝试在上面的代码中列出的格式,它不。

任何想法,我做错了什么?

值以文本forms出现,但单元格的常规格式将其转换为真实的date值。 保留这个真正的date值并改变单元格的Range.NumberFormat属性以按照你想要的方式显示date会更好。

 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属性设置为文本而不是常规, 然后将Range.Value属性设置为文本,看起来像一个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