我尝试通过在 Sheets("Sheet1").Cells(17, 3).Value 中的日期添加月份来输入日期值,该值是 01/10/2011,但格式为 Oct-11。然后返回 Sheets("Sheet1").Cells(17, 4).Value = LDate,以显示 Nov-11
sDate = Sheets("Sheet1").Cells(17, 3).Value --> this shows 01/10/2011 when I hove over sDate
LDate = DateAdd("m", 1, sDate) --> this shows 01/11/2011 when I hove over LDate
然后我想在以下单元格中输入该值 01/11/2011
Sheets("Sheet1").Cells(17, 4).Value = LDate
Selection.NumberFormat = "mmm-yy"
但在单元格中显示 11/01/2011(1 月 11 日),为什么会这样做以及如何解决此问题?
最佳答案
小问题
Selection.NumberFormat = "mmm-yy"
您尚未选择任何内容,因此该格式将放置在您离开光标的位置。
主要问题
您遇到了 Excel 错误,即在将数据传输到工作表时,如果可以的话,它会将日期解释为美国(中端)格式。 “1/11/2011”对于美国人来说就是“11 Jan 11”,所以对于 Excel 来说就是“11 Jan 11”。 “20/11/2011”不是有效的美国日期,因此对于 Excel 来说,它是“20 Nov 11”。
我可以通过将 sDate 和 LDate 声明为字符串来重复您的问题。 DateAdd
可以正确处理字符串,因此 LDate 是正确的,但当放置在单元格中时,它会被误解。
我可以通过将 sDate 和 LDate 声明为日期来解决您的问题:
Dim sdate As Date
Dim Ldate As Date
关于date - Excel VBA - 日期格式自动更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9426192/