Excel 以美国显示的当前日期,而不是以前的预期格式
此Excel VBA代码不再工作Excel 以美国显示的当前日期,而不是以前的预期格式,excel,vba,date-formatting,Excel,Vba,Date Formatting,此Excel VBA代码不再工作 Private Sub cmdAjouter\u Click() 将ws设置为工作表 作为整数的Dim lr 设置ws=ThisWorkbook.Sheets(“Achats” lr=ws.Range(“A”和Rows.Count).End(xlUp).Row+1 ws.Range(“M”和lr.Value=格式(日期,“dd/mm/yyyy”) '[...] 端接头 今天我们是2020年2月11日,它应该返回日期为“11/02/2020”(法语格式),但它返
Private Sub cmdAjouter\u Click()
将ws设置为工作表
作为整数的Dim lr
设置ws=ThisWorkbook.Sheets(“Achats”
lr=ws.Range(“A”和Rows.Count).End(xlUp).Row+1
ws.Range(“M”和lr.Value=格式(日期,“dd/mm/yyyy”)
'[...]
端接头
今天我们是2020年2月11日,它应该返回日期为“11/02/2020”(法语格式),但它返回“02/11/2020”(美国格式).最好将其存储为实际的
日期
,而不是字符串
,只需使用.NumberFormat
属性对其进行格式化,这样就不会根据您的区域设置再次转换
ws.Range("M" & lr).NumberFormat = "dd/mm/yyyy"
ws.Range("M" & lr).Value = Date
如果日期类似于2月13日,您的方法可能会很好地工作,因为这样就不会混淆13是一个月。最好将其存储为实际的
日期,而不是字符串,只需使用.NumberFormat
属性对其进行格式化,这样做是不对的t根据您的区域设置,尝试再次转换
ws.Range("M" & lr).NumberFormat = "dd/mm/yyyy"
ws.Range("M" & lr).Value = Date
如果日期类似于2月13日,您的方式可能会很好,因为这样就不会混淆13是一个月。日期格式将遵循windows的区域设置。可能您的机器区域被更改了?单元格本身被设置为日期格式(短日期)使用dd/mm/yyyy格式,可能是这样,但是Format
函数将使用字符串设置单元格值,然后单元格将尝试转换为日期。尝试一下这一点来证明我的观点,只需将日期格式更改为与所需相反的格式,就可以得到所需的格式。ws.Range(“M”&lr)。value=Format(date,“mm/dd/yyyy”)
@ArcherBird:我在Windows中的区域设置设置为法语,但我的Excel为英语(为了与我使用的其他程序兼容的一些问题)。日期格式在Windows和Excel中的设置方式(dd/mm/aaaa)相同!:(日期格式将遵循windows的任何区域设置。可能您的计算机区域已更改?单元格本身设置为日期格式(短日期)使用dd/mm/yyyy格式,可能是这样,但是Format
函数将使用字符串设置单元格值,然后单元格将尝试转换为日期。尝试一下这一点来证明我的观点,只需将日期格式更改为与所需相反的格式,就可以得到所需的格式。ws.Range(“M”&lr)。value=Format(date,“mm/dd/yyyy”)
@ArcherBird:我在Windows中的区域设置设置为法语,但我的Excel为英语(为了与我使用的其他程序兼容)。日期格式在Windows和Excel中的设置方式相同(dd/mm/aaaa)(