问题描述
此 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 是一个月就不会混淆了。