date - Excel VBA - 日期格式自动更改

标签 date excel vba

我尝试通过在 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/

相关文章:

excel - 如何在 Excel VBA 电子邮件中添加签名?

vba - Excel 宏识别今天是星期几

python - 使用 Python 比较不同格式的日期和时间

java - Swing 中的简单日期组件

java - 使用 Date(milliseconds) 构造函数初始化日期

excel - 对特定工作簿禁用 Ctrl+D

excel - 在代码段上出现 "Argument not optional"错误

java - 字符串 -> java.util.Date -> java.sql.Date(带时间戳)

java - 如何使用java将一个Excel单元格拆分为两个单元格

eclipse - 我的 TestNG 测试用例中 NullPointerException 的解决方案