我试图通过在Sheets(“Sheet1”)中添加一个月来输入Date值。单元格(17,3).Value是01/10/2011但格式为Oct-11。然后返回Sheets(“Sheet1”)。单元格(17,4).Value = LDate,显示11月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日),为什么要这样做,我该如何解决这个问题呢?
答案 0 :(得分:2)
次要问题
Selection.NumberFormat = "mmm-yy"
您尚未选择任何内容,因此无论您将光标放在何处,都会放置此格式。
主要问题
如果可以在将数据传输到工作表时将日期解释为美式(中端)格式,那么您已经遇到了Excel错误。 “1/11/2011”将是“1月11日11”给一个美国人,所以它是Excel。 “2011年11月11日”不是有效的美国日期,所以对Excel来说是“11月11日”。
我可以通过将sDate和LDate声明为字符串来复制您的问题。 DateAdd
可以正确使用字符串,因此LDate是正确的,但当放在单元格中时,它会被误解。
我可以通过将sDate和LDate声明为日期来解决您的问题:
Dim sdate As Date
Dim Ldate As Date
答案 1 :(得分:0)
Selection.NumberFormat = "mmm-yy"
以上行正在改变数字格式。实际上当我完成你的步骤时,我遇到了同样的问题。
但是数字格式正在进行所有这些自动更改。
示例:
在运行宏时,假设所选单元格为(17,3)
。
01/11/2012
"Jan-12"
。 (由于数字格式应用为"mmm-yy"
,因此考虑将01/11/2012
视为Jan-12
)第二次,如果您选择单元格(17,4)
2/11/2012
"Feb-12"
答案 2 :(得分:0)
而不是尝试
Cells(row2,col2) = Cells(row1,col1)
试试这个
Cells(row1,col1).Copy
Cells(row2,col2).PasteSpecial Paste:=xlPasteValuesAndNumberFormats