【发布时间】:2014-03-06 15:21:41
【问题描述】:
我有一个包含日期值的工作表。 Excel 将它们正确解释为日期。
我有一个接受日期参数的 VBA 函数。
当我从工作表中调用此函数时,有时它可以正常工作,有时却不能。当我在函数中设置断点以检查从不正确的单元格传递给函数的值时,我发现传递给函数的日期是错误的——与应该传递给函数的日期相差一天。时间值正确。
这发生在工作表上的随机位置。事实上,在一个昨天不能正常工作的单元格中,它现在可以正常工作了。
值的时间部分似乎没有影响。可以是 22:00 小时,08:00 小时,还差一天。
这对任何人都有意义吗?我很困惑。
编辑:
我没有发布任何代码,因为我认为这不是代码问题。但这是函数签名:
Function timeToDecimal(time As Date, semanticTimeFormat As String) As Double
在函数的第一行可执行代码设置断点,我看到time是,例如1/1/1900 1:09:25 PM,当,在工作表上,它显然是1/2/1900 1:09:25 PM。
问题不在于我编写的 VBA 代码。问题是 Excel 将数据传递给函数。 Excel 和 VBA 之间的界面是否有一些我不熟悉的怪癖?
【问题讨论】:
-
发布您的一些代码将帮助我们帮助您:)
-
这些日期值是计算出来的吗?
-
你不应该使用单词
time作为变量名,因为它是一个reserved keyword。我不是说这是问题的根源,但肯定没有帮助:) -
所以在工作表中,值 ACTUALLY
1/2/1900 1:09:25 PM还是其他日期格式?喜欢看单元格,它的确切文本是什么? -
编辑栏显示
1/2/1900 1:09:25 PM,但格式化文本为61:09:25。