VBA Excel 2013格式功能更改日期

时间:2016-05-25 07:07:52

标签: excel vba excel-vba ms-office

以下代码行不仅更改了日期格式,还更改了日期的值。为什么会发生这种情况,我该如何避免呢?

代码:

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的值:

enter image description here

执行代码后rng.Cells(intStartRow, rng.Columns.Count + 1).Value的值:

enter image description here

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

它发生的原因是日期信息在内部存储为十进制数,并显示应用于单元格的日期格式。 在您的代码中,您将日期信息更改为字符串,因为函数Format()的结果始终是字符串。 Rory提供了解决问题的灵魂。