关于excel:VBA日期时间值不返回任何时间

VBA Date + TimeValue returns no time

我有一个日期和时间,我将这些日期和时间从形式为

的字符串组合成一个日期时间

1
2
3
4
5
6
7
date_string ="2020-12-30" 'yyyy-mm-dd    
date_code = CDate(date_string)

time_string ="00:00:00" 'hh:mm:ss
time_code = TimeValue(time_string)

date_time = date_code + time_code

常见的返回看起来像05.01.2019 11:00:00,这正是我所期望的。

如果我使用IsDate(date_time)

进行测试,则返回的值也全部签出为TRUE

但是,只要时间是00:00:00,我只会得到返回的日期,没有附加时间。我不太了解这一点,因为TimeValue(time_string)返回00:00:00

因此,在将日期和时间组合到日期时间字符串时,这肯定是一个问题。

有人可以告诉我为什么Excel VBA中不存在午夜或我在创建时间码时出现的错误吗?

编辑:

我试图更好地解释自己的情况:

我在代码中执行此日期,日期/时间的操作,然后将结果放入循环数组中。仅在稍后将其写入表中的单元格。

通过将时间写入到单元格中,即使将单元格自定义格式为" DD.MM.YYYY hh:mm "也不会显示时间,因为它完全丢失了单元格值。

我是否需要在date_code + time_code点应用格式?


有时候答案可能是如此简单。感谢Variatus和Paul,我检查了格式。

我在代码中应用了date_time = Format(date_code + time_code,"dd.mm.yyyy hh:mm")。使用此代码,即使在Excel表的单元格值中,我的代码也会按预期运行,并且00:00:00会按预期显示。


当您在单元格中输入整数(如43930)时,Excel会将数字记录为整数,就像您输入的那样。然后,您可以将单元格格式设置为#,##0.000,从而使数字显示为43930.000。或者,您可以格式化与自定义dd mmm yyy hh:mm:ss相同的数字,并将其显示为2020年4月9日00:00:00。关键是Excel选择以最有效的方式将数字记录为整数。

因此,如果您输入一个DateValue TimeValue,该值加起来等于一个整数Excel将正确记录该整数。在工作表中显示该整数的格式取决于单元格的格式。