以美国显示的当前日期而不是以前的预期格式

问题描述

此 Excel VBA 代码不再起作用。

Private Sub cmdAjouter_Click()
Dim ws As Worksheet
Dim lr As Integer

Set ws = ThisWorkbook.Sheets("Achats"

lr = ws.Range("A" & Rows.Count).End(xlUp).Row + 1
ws.Range("M" & lr).Value = Format(Date,"dd/mm/yyyy")

'[...]

End Sub

今天是 2020 年 2 月 11 日,它应该返回日期为“11/02/2020”(法国格式)但它返回“02/11/2020”(美国格式)。

解决方法

最好将其存储为实际的 Date 而不是 String 并仅使用 .NumberFormat 属性来格式化它,这样就不会尝试转换再次根据您的区域设置。

ws.Range("M" & lr).NumberFormat = "dd/mm/yyyy"
ws.Range("M" & lr).Value = Date

如果日期是像 2 月 13 日这样的日期,您的方法可能会正常工作,从那时起,13 是一个月就不会混淆了。