VBA Excel 2013格式function更改date
以下代码行不仅更改date的格式,还更改date的值。 为什么会发生这种情况,我该如何避免呢?
码:
rng.Cells(intStartRow, rng.Columns.Count + 1) = _ Format(rng.Cells(intStartRow, rng.Columns.Count + 1).Value, "mmm-yy")
rng.Cells(intStartRow, rng.Columns.Count + 1).Value
在执行代码之前的值:
rng.Cells(intStartRow, rng.Columns.Count + 1).Value
值rng.Cells(intStartRow, rng.Columns.Count + 1).Value
。执行代码后的值:
如果您希望转换为实际date并更改显示的格式,请使用:
With rng.Cells(intStartRow, rng.Columns.Count + 1) .Value = CDate(.Value) .NumberFormat = "mmm-yy" End With
发生这种情况的原因是date信息在内部存储为十进制数字,并以应用于单元格的date格式显示。 在您的代码中,您将date信息更改为一个string,因为函数Format()
始终是一个string。 解决这个问题的灵感来自Rory