Excel VBA - 日期格式自动更改
我试图通过在表格中添加一个月来输入日期值(“Sheet1”)。单元格(17,3)。值是01/10/2011但格式为Oct-11。然后在表( “工作表Sheet”)返回。将细胞(17,4)。价值= LDate,展现NOV-11Excel VBA - 日期格式自动更改
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漏洞,这将解释日期,如果它能够将数据传送到一个工作表中美国(中端)格式之中。 “2011年1月11日”将是“1月11日11日”给美国人,所以它是Excel。 “20/11/2011”不是有效的美国日期,所以Excel是“11月20日”。
我可以通过将sDate和LDate声明为字符串来复制您的问题。 DateAdd
与字符串正确工作,所以LDate是正确的,但是当放置在单元格中时,它会被误解。
我可以通过声明SDATE和LDate如日期解决您的问题:
Dim sdate As Date
Dim Ldate As Date
- >这表明01/10/2011当我在绳拉SDATE
我猜你的默认日期格式为“MM/DD/yyyy“,因此你正在解决这个问题。
在运行宏之前,右键单击图纸(“Sheet1”)。单元格(17,3)并单击格式。然后检查该单元格的格式。
EDIT:
如果是则毫米/日/年的小区的值更改为10/01/2011,然后再次尝试该宏。
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"
- 运行宏之前:单元格的值是
而不是试图
Cells(row2,col2) = Cells(row1,col1)
试试这个
Cells(row1,col1).Copy
Cells(row2,col2).PasteSpecial Paste:=xlPasteValuesAndNumberFormats