我从一个电子表格中抓取日期并将其输出到另一个电子表格中。抓住日期后,当我调试时,它的格式正确。当我输出日期时,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日。
答案 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"