【问题标题】:how to change excel cell format and locale如何更改excel单元格格式和区域设置
【发布时间】:2014-04-28 01:14:27
【问题描述】:

平台:操作系统窗口 7

Excel:2007

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

首先是这个语言环境(位置),表示英语(新加坡)。我想把它改成英语(美国)

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

我尝试过的:

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

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

如何让它将单元格值返回为“2014 年 3 月 18 日”?

【问题讨论】:

    标签: excel vba


    【解决方案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

    如果你想变暗,那么:

    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
    

    【讨论】:

    • 你的第 5 行 "ary = Split(s,"/") " ary 需要 Dim as ...?
    • @Leon: 我很少调暗 Split 的输出
    • 仅在 Dim ary 之后,在下一行遇到运行时错误。 value = Date......(下标超出范围)
    • 是的,我做了同样的事情,但遇到运行时错误'9':下一行的下标超出范围。Value = DateSerial(ary(2), ary(1), ary(0) )
    • 这是一条有价值的线索! 这意味着没有“足够”的 ary ......这可能意味着单元格没有没有两个“/”............
    【解决方案2】:

    嗯,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)
    

    【讨论】:

    • 我的单元格格式仅包含日期,但位于“DD/M/YYYY”(例如 18/3/2014)但我希望输出为“M/D/YYYY”(3 /18/2014) 格式,你提到的方法将 18 更改为月 =P
    猜你喜欢
    • 1970-01-01
    • 2016-03-12
    • 2014-12-23
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多