如何更改Excel单元格格式和区域设置

时间:2014-03-20 21:41:42

标签: excel vba

平台:OS窗口7

Excel:2007

问题:我有一个.csv文件,其中包含一些来自其他地方的数据和日期。数据(日期)位于具有日期类别的单元格A2中。 (例如2014年3月18日)

首先是这个Locale(位置),英语(新加坡)。我想将其改为英语(美国)

之后,将日期格式更改为“M / D / YYYY”

我曾尝试过:

ExcelApp.ActiveWorkbook.Sheet1.Range("A2").NumberFormat = "M/D/YYYY"

它提示我运行时错误“438” object不支持此属性或方法。

怎么能让它返回单元格值为“3/18/2014”?

2 个答案:

答案 0 :(得分:1)

如果您查看 A2 ,请参阅:

18/3/2014

然后是字符串或格式化日期。 无关紧要;运行此操作来修复它:

Sub FixDate()
    Dim s As String
    With Range("A2")
        s = .Text
        ary = Split(s, "/")
        .Value = DateSerial(ary(2), ary(1), ary(0))
        .NumberFormat = "m/d/yyy"
    End With
End Sub

修改#1

如果你想 Dim ary,那么:

Option Explicit

Sub FixDate()
    Dim s As String, ary
    With Range("A2")
        s = .Text
        ary = Split(s, "/")
        .Value = DateSerial(ary(2), ary(1), ary(0))
        .NumberFormat = "m/d/yyy"
    End With
End Sub

答案 1 :(得分:0)

嗯,CSV文件只是一个逗号分隔值文件,因此它不支持XLS或XLSX文件所具有的任何单元格格式。所以你能做的是:

如果只包含日期。

Dim dt As Date : dt = cdate(Range("A2").Value)
Range("A2").Value = Format(dt, "MM/d/yyyy")

如果它包含日期和时间,您只需要日期。

Dim dt As Date : dt = cdate(Range("A2").Value)
Range("A2").Value = FormatDateTime(dt, 2)

如果它包含日期和时间,并且您想要两者。

Dim dt As Date : dt = cdate(Range("A2").Value)
Range("A2").Value = FormatDateTime(dt)