日期格式为字符串

时间:2014-03-27 15:47:38

标签: string date excel-vba casting vba

我创建了这个子目的,意图采用默认美国日期约定,将其改为英国格式" yyyy-mm-dd"然后转换为字符串。我想在转换为字符串之前更改格式,因为它更容易为我的目的而工作。但是,虽然单元格格式已更改,但字符串似乎以原始美式格式保留。我怎样才能解决这个问题?是什么原因造成这种情况?

Sub Changedate()

    Sheet1.Cells(1, 3).Select
    Selection.NumberFormat = "yyyy-mm-dd;@"
    Sheet1.Cells(1, 4).Select
    Selection.NumberFormat = "yyyy-mm-dd;@"

    Dim firstDate As String
    Dim secondDate As String

    firstDate = Str(Sheet1.Cells(1, 3).Value)
    secondDate = Str(Sheet1.Cells(1, 4).Value)

    MsgBox firstDate

    Sheet1.Cells(1, 3).Select
    Selection.NumberFormat = "m/d/yyyy"
    Sheet1.Cells(1, 4).Select
    Selection.NumberFormat = "m/d/yyyy"

End Sub

2 个答案:

答案 0 :(得分:1)

你应该使用:
    firstDate = format(Sheet1.Cells(1, 3).Value, "yyyy-mm-dd")
Excel日期只是一个数字,更改的NumberFormat只会影响它的显示方式。 Str()可能使用您的系统默认日期格式,您必须使用Format()来强制它。

答案 1 :(得分:1)

您还可以尝试使用.text属性而不是.value.value获取单元格内容而不进行格式化。所以你可能会看到使用.value错误地格式化字符串。 .text使用格式获取单元格内容(观察运行时,如果在循环中运行,则可能需要很长时间。).text是最慢的方法获取单元格内容,但只有几行或运行它不会有太大的区别