【发布时间】:2017-10-07 20:16:32
【问题描述】:
我有一些 vba 代码评估 6 列并将日期从 yyyymmdd 格式化为 mm/dd/yyyy。代码工作正常,直到它在范围内找到一个空白单元格,然后我得到一个类型 13 运行时错误。调试器突出显示 DateSerial 行,所以我认为这就是我的问题所在。
有什么想法吗?
Sub Convert_Date()
Dim c As Range
Application.ScreenUpdating = False
For Each c In Range("AC2:AC" & Cells(Rows.Count, "AC").End(xlUp).Row)
c.Value = DateSerial(Left(c.Value, 4), Mid(c.Value, 5, 2), Right(c.Value, 2))
c.NumberFormat = "mm/dd/yyyy"
Next
Application.ScreenUpdating = False
Dim b As Range
Application.ScreenUpdating = False
For Each b In Range("AL2:AL" & Cells(Rows.Count, "AL").End(xlUp).Row)
b.Value = DateSerial(Left(b.Value, 4), Mid(b.Value, 5, 2), Right(b.Value, 2))
b.NumberFormat = "mm/dd/yyyy"
Next
Application.ScreenUpdating = False
Dim a As Range
Application.ScreenUpdating = False
For Each a In Range("AQ2:AQ" & Cells(Rows.Count, "A").End(xlUp).Row)
a.Value = DateSerial(Left(a.Value, 4), Mid(a.Value, 5, 2), Right(a.Value, 2))
a.NumberFormat = "mm/yyyy"
Next
Application.ScreenUpdating = False
Dim d As Range
Application.ScreenUpdating = False
For Each d In Range("AR2:AR" & Cells(Rows.Count, "A").End(xlUp).Row)
d.Value = DateSerial(Left(d.Value, 4), Mid(d.Value, 5, 2), Right(d.Value, 2))
d.NumberFormat = "mm/yyyy"
Next
Application.ScreenUpdating = False
Dim e As Range
Application.ScreenUpdating = False
For Each e In Range("AT2:AT" & Cells(Rows.Count, "A").End(xlUp).Row)
e.Value = DateSerial(Left(e.Value, 4), Mid(e.Value, 5, 2), Right(e.Value, 2))
e.NumberFormat = "mm/yyyy"
Next
Application.ScreenUpdating = False
Dim f As Range
Application.ScreenUpdating = False
For Each f In Range("AU2:AU" & Cells(Rows.Count, "A").End(xlUp).Row)
f.Value = DateSerial(Left(f.Value, 4), Mid(f.Value, 5, 2), Right(f.Value, 2))
f.NumberFormat = "mm/yyyy"
Next
Application.ScreenUpdating = False
End Sub
【问题讨论】:
-
试试:
If Not IsEmpty(c) then c.Value = DateSerial(Left(c.Value, 4), Mid(c.Value, 5, 2), Right(c.Value, 2))
标签: vba date-formatting