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).Valuerng.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