VBA Excel 2013 格式函数更改日期

VBA Excel 2013 Format Function changes 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的值:

如果您希望转换为实际日期并更改显示格式,请使用:

With rng.Cells(intStartRow, rng.Columns.Count + 1)
   .Value = CDate(.Value)
   .NumberFormat = "mmm-yy"
End With

发生这种情况的原因是日期信息在内部存储为十进制数,并以应用于单元格的日期格式显示。 在您的代码中,您将日期信息更改为字符串,因为函数 Format() 的结果始终是一个字符串。 解决问题的方法由 Rory

提供