String 日期格式为字符串

String 日期格式为字符串,string,date,excel,casting,vba,String,Date,Excel,Casting,Vba,我创建此sub的目的是采用默认的美国日期约定,将其更改为英国格式“yyyy-mm-dd”,然后转换为字符串。我想在转换为字符串之前更改格式,因为它更容易用于我的目的。但是,尽管单元格格式已更改,字符串似乎仍以原始美式格式保留。我该如何解决这个问题?它这样做的原因是什么 Sub Changedate() Sheet1.Cells(1, 3).Select Selection.NumberFormat = "yyyy-mm-dd;@" Sheet1.Cells(1, 4).

我创建此sub的目的是采用默认的美国日期约定,将其更改为英国格式“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
您应该使用:
firstDate=format(Sheet1.单元格(1,3).值,“yyyy-mm-dd”)

Excel日期只是一个数字,更改NumberFormat只会影响其显示方式。
Str()可能使用您的系统默认日期格式,您必须使用format()强制执行。

您还可以尝试使用
.text
属性,而不是
.value
.value
获取不带格式的单元格内容。因此,您可能会看到使用
.value
格式不正确的字符串
.text
使用格式获取单元格内容(注意运行时间,如果在循环中运行,可能会花费很长时间)。
.text
是获取单元格内容最慢的方法,虽然只有几行或几次运行,但不会有太大区别

您在单元格中实际看到的典型值是什么……“格式化”值似乎不起作用。我试过了,我得到了一个编译错误。。。它应该可以工作(我查看vba帮助文件并复制和粘贴了它们的示例以获取格式),但错误是“预期数组”我发布的代码对我有效,你可以发布工作表中的精确值吗(如Gary所问)?实际上不是我的问题,我只是在发布答案之前测试了它,因为如果它有效,我就不会麻烦了。这是一个编译错误,所以实际上与单元格中的值无关。虽然我为其设置的单元格中的“实际”值是
09/03/2010
我有excel 2010,但您有什么?也许这是一个更新/旧版本的东西道歉你的代码运行良好我只是有一个“愚蠢”的一天。我创建了一个名为“format”的字符串变量,因此当我试图调用该方法时,它试图使用我的变量而不是该方法来执行某些操作。