VBA日期收集正确但输出错误

时间:2012-09-17 14:17:50

标签: excel vba

我从一个电子表格中抓取日期并将其输出到另一个电子表格中。抓住日期后,当我调试时,它的格式正确。当我输出日期时,debug.print也会显示正确的格式。但是,电子表格上刚刚发送的值的格式,并没有显示正确的格式。

我正在使用:

Sheets(SheetName).Cells(RowNum, ColNum).Value = Data
Sheets(SheetName).Cells(RowNum, ColNum).NumberFormat = "dd/mm/yyyy"

之后我已经粘贴了这个值,但是月份和日期仍然是错误的。

我有什么问题吗?如果我右键单击它认为它的日期是dd / mm / yyyy,而不是9月4日它将显示4月9日。

4 个答案:

答案 0 :(得分:1)

这可能会给本地化带来一些麻烦:

尝试使用NumberFormatLocal,如果DanielCooks提示没有帮助;)

编辑:更为早些时候,库克先生说,检查给定的数据是否正确。

编辑:

使用我的德语版本,我使用/作为分隔符时遇到了一些麻烦,这就是为什么我尝试使用此代码.NumberFormat ="dd-mm-yyyy;@" - 工作正常;我可以根据自己的喜好切换日期和月份。

编辑:

使用.NumberFormatLocal = "TT/MM/JJJJ"我必须使用德国短裤的日,月和年,但现在我可以使用/作为分隔符。

你应该用一些格式字符串试验一下;)

答案 1 :(得分:1)

很抱歉复活了一个旧帖子,但我有一个问题,VBA输出有效日期为美国风格,实际日期已更改,例如5月1日更改为1月5日。我发现这个帖子但我没有找到我需要的答案,现在我已经解决了,我想我会分享它:

关键是不要将存储日期的变量定义为" date"但作为" double",例如

Dim ReportDate As Double
ReportDate = Date


Range("E6").Value = ReportDate

这可以输出数字"日期值"然后excel然后在本地格式,例如41644被格式化为" 05/01/14"使用英国格式或" 01/05/14"使用美国格式。

希望这证明对其他人有用(当我忘记在六个月内如何解决它时,可能是我)。

答案 2 :(得分:0)

最后我不得不将单元格格式化为“TEXT”以保持正确的格式

答案 3 :(得分:0)

(1)您需要将变量定义为“Date”类型以读取输入,然后在将日期格式分配给日期变量之前设置日期格式。

(2)您还需要格式化日期输出以使其正常工作!

' ** 阅读日期输入 ****

Dim date1 as Date

Range("B2").NumberFormatLocal = "dd/mm/yyyy"

date1 = Range("B2").Value

' ** 输出日期 ****

Range("E2").Value = date1 

Range("E2").NumberFormatLocal = "dd/mm/yyyy"