这是我的第一个问题,所以我希望一切都正确。我已经破解了一些代码来从excel中读取数据,并输出带有语音标记的CSV文件给每个单元格,不管是否为空。问题出在excel将YYYY-MM-DD日期写入CSV的日期为MM-DD-YYYY。为了解决这个问题,我写了下面的if语句:Excel单元格日期格式
If IsDate(Cells(r, c)) Then
不幸的是,现在的程序在它解释细胞与“2A”作为一个日期,以及(即使我已经检查的格式在Excel中是文本),将其导出为“1899-12-30”。我已经把在一个非常快速和肮脏的子句来过滤此
If Selection.Cells(r, c) = "2A" Then
但我不知道是否有一个更优雅的方式,转换日期格式,仅在YYYY-MM-DD或类似的格式。为什么它认为A2是一个约会!?完整的代码如下:
For r = 1 To Selection.Rows.Count
s = """"
c = 1
For c = 1 To Selection.Columns.Count
If IsDate(Selection.Cells(r, c)) Then
'ridiculous clause to get rid of A2 being treated as a date
If Selection.Cells(r, c) = "2A" Then
s = s & Selection.Cells(r, c)
Else
s = s & Format(Selection.Cells(r, c), "YYYY-MM-DD")
End If
Else
s = s & Selection.Cells(r, c)
End If
If c = Selection.Columns.Count Then
s = s & """" 'end of row
Else
s = s & """,""" 'mid row
End If
Next c
a.writeline s
Next r
你是指“A2”(如问题文本中)或“2A”(如在你的代码中)?另外,你需要用'Selection.'来限定所有的单元格引用(例如'IsDate(Selection.Cells(r,c)')如果编码它将只按预期工作,如果你的选择开始于单元格A1 –
很好的反馈,更正,并感谢 – pluke