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

时间:2016-05-09 02:32:31

标签: excel excel-vba date format cell vba

在[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 个答案:

答案 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