在vba excel中处理时间时获取错误值
我试着在我的excel表格上做一些计算,我在使用宏,我在处理时间值在vba excel中处理时间时获取错误值,excel,vba,Excel,Vba,我试着在我的excel表格上做一些计算,我在使用宏,我在处理时间值 h2 = rg.Cells(i, 5) 'time value h1 = rg.Cells(i, 4) 'time value h3 = (TimeValue("23:59") - h1) + (h2 - TimeValue("23:59")) 例如,当h1=“20:00”和h2=“07:55”h3应该是11:55但它给出了12:05 顺便说一句,H1是入口时间,H2是超时时间,所以H2在第二天,我试图计算时间的差异
h2 = rg.Cells(i, 5) 'time value
h1 = rg.Cells(i, 4) 'time value
h3 = (TimeValue("23:59") - h1) + (h2 - TimeValue("23:59"))
例如,当h1=“20:00”
和h2=“07:55”
h3应该是11:55
但它给出了12:05
顺便说一句,H1
是入口时间,H2
是超时时间,所以H2在第二天,我试图计算时间的差异
实际上,正确答案是-11:05:00,但Excel不处理负时间。减去11:05:00加上一天等于正12:05:00。因为正如您所指出的,H2是H1之后的一天,您需要将其考虑到您的计算中 因此,为了计算H1和H2之间的差异,应先将24小时加到H2中
h2 + 1dy
07:55 + 24:00 = 31:55
v
-h1
31:55 - 20:00 = 11:55
以时间表示的一天是1
——时间是以一天的小数点来度量的
因此,在许多其他方法中,要获得上述结果,您的公式应该是:
h3=(h2+1)-h1
你想在h3上得到什么??您的变量是否声明为Date
?是的变量是时间值,它工作正常,除非它得到错误的值。如果给出错误的值,它应该是11:55,而不是12:05。让我们假设第二天的h1=12:00和h2=12:00使用您的公式将返回00,而它应该返回24小时。。对当然如果您希望它考虑日期和时间,则需要确保单元格包含日期。如果两者都包含日期,那么这只是一个从后一个时间中减去前一个时间的例子。嗯,没有日期,但我确定h2在第二天,所以没有办法?对不起,我现在明白你的推理了。该公式实际上按原样工作,包含1整天(24小时),问题是Excel将其格式化为时间,并且仅显示时间元素。将其重新格式化为[hh]:mm
而不是hh:mm
,它将显示24:00
,单元格中根本没有时间(键入或显示),公式为=(h2+1)-h1
?它在我的桌面上运行良好。