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
提供
下面这行代码不仅改变了日期的格式,还改变了日期的值。为什么会发生这种情况,我该如何避免?
代码:
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