在[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例如,它可以工作,但每次我尝试上面代码中列出的格式时,它都没有。
关于我做错的任何想法?
答案 0 :(得分:3)
值以文本形式出现,但单元格的常规格式将其转换为真实的日期值。最好保留该真实日期值并更改单元格的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设置为看起来像日期的文本之前,将单元格的Range.Value property设置为文本而不是常规。
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