平台: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”?
答案 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)