Excel VBA数据收集正确,但输出错误

Excel VBA数据收集正确,但输出错误,excel,vba,Excel,Vba,我从一个电子表格中抓取日期并将其输出到另一个电子表格中。获取日期后,当我调试.print时,它的格式正确。当我输出日期时,debug.print也会显示正确的格式。但是,该值刚刚发送到的电子表格上的格式不显示正确的格式 我正在使用: Sheets(SheetName).Cells(RowNum, ColNum).Value = Data Sheets(SheetName).Cells(RowNum, ColNum).NumberFormat = "dd/mm/yyyy" 之后我粘贴了值,但月份

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

这可能是本地化的一些问题:

如果DanielCooks的提示没有帮助,请尝试使用
NumberFormatLocal

编辑:erlier这是Cook先生的陈述,用来检查给定的数据是否正确

编辑:

在我的德语版本中,我很难使用
/
作为分隔符,这就是为什么我尝试使用此代码
.NumberFormat=“dd-mm-yyyy;@”
-效果很好;我可以随心所欲地变换日期和月份

编辑:

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


您应该尝试一些格式字符串;)

最后,我必须将单元格格式化为“文本”以保持正确的格式(1)您需要将变量定义为“日期”类型以读取输入,然后在将其分配给日期变量之前设置日期格式

(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"
**输出日期****

Dim date1 as Date

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

date1 = Range("B2").Value
Range("E2").Value = date1 

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

很抱歉恢复一个旧帖子,但是我在VBA输出一个有效日期时遇到了一个问题,因为实际日期发生了变化,例如5月1日改为1月5日。我在这篇帖子上找到了我需要的答案,现在我已经找到了答案,我想我会分享它:

关键不是将存储日期的变量定义为“日期”,而是定义为“双精度”,例如

这是因为它输出数字“日期值”,然后excel在本地格式化,例如41644使用英国格式格式化为“05/01/14”,或使用美国格式格式化为“01/05/14”


希望这对其他人有用(可能是我忘了如何在六个月内解决它的时候)。

Daniel的提示不起作用:(在excel中,我的区域设置为英语(英国)我的提示没有帮助,希望你的提示有帮助:-)没有帮助:(数据是正确的,因为debug.print在VBA编辑器中显示了正确的值,但它们在工作表中没有正确显示。因此debug.print on data提供了确切的信息?在下面发布了“解决方案”/“hack”。不确定问题存在的原因。