我有一个电子表格(x4),可以累计几个员工的总工作时数。一名员工的总数达到24小时。在我的函数中,由于Excel在内部表示小时数,相当于1.根据“小时”的值,然后格式化单元格以显示每个人的总小时数:分钟。我检查过 - typename(hours)= double。当小时= 1时,我无法理解为什么小时> = 1不等于'真'。如果我为该人的电子表格值添加1分钟,它是否按预期工作?
Public Function format_hours(hours As Variant) As Variant
If hours >= 1 Then
format_hours = Application.Text(hours, "[hh]:mm")
ElseIf hours > 0 Then
format_hours = Format(hours, "hh:mm")
Else
format_hours = 0
End If
End Function
答案 0 :(得分:0)
问题在于Hours as Variant
可能可能是<{1}},而不是日期/双倍。由于你从未明确地检查/转换为Date / Double,然后在你的String
中,它可能没有进行你期望的隐式转换和比较。
解决方案:使用显式转换和比较。隐含的因为它们不可避免地会产生这样的神秘错误。