Vba 当存在分数分量时,如何计算小时数

Vba 当存在分数分量时,如何计算小时数,vba,excel,Vba,Excel,我正试图制作一个电子表格来计算我一周的工作时间。我遇到的问题是DateDiff函数只返回整数,因此得到的结果不正确 Function CalculateHoursDay(strStart As String, strEnd As String, intLunch As Integer) As Double Dim dblHours As Double dblHours = DateDiff("h", strStart, DateAdd("h", 12, strEnd)) -

我正试图制作一个电子表格来计算我一周的工作时间。我遇到的问题是DateDiff函数只返回整数,因此得到的结果不正确

Function CalculateHoursDay(strStart As String, strEnd As String, intLunch As Integer) As Double

    Dim dblHours As Double

    dblHours = DateDiff("h", strStart, DateAdd("h", 12, strEnd)) - intLunch

    CalculateHoursDay = dblHours

End Function
如果我用“7:00”、“2:45”、“0.5”调用函数,那么当我需要7.25时,我会得到7。事实上,“7:00”,“2:45”也得到了7,所以你可以看到十进制值被截断了。我增加了12小时,因此可以轻松输入时间,而不考虑上午、下午或军事时间,因为超过99%(如果不是100%)的时间是上午开始时间,下午结束时间


我期望从函数中获得7.25,并带有规定的参数。有什么建议吗?

Alex提供了正确的答案,tbur还指出了一个错误,我一应用Alex的解决方案就会出现

Function CalculateHoursDay(strStart As String, strEnd As String, dblLunch As Double) As Double

    Dim dblHours As Double

    '"n" refers to minutes.
    dblHours = (DateDiff("n", strStart, DateAdd("h", 12, strEnd)) / 60) - dblLunch

    CalculateHoursDay = dblHours

End Function

Alex提供了正确的答案,tbur还指出了一个bug,在我应用Alex的解决方案时,这个bug就会立即出现

Function CalculateHoursDay(strStart As String, strEnd As String, dblLunch As Double) As Double

    Dim dblHours As Double

    '"n" refers to minutes.
    dblHours = (DateDiff("n", strStart, DateAdd("h", 12, strEnd)) / 60) - dblLunch

    CalculateHoursDay = dblHours

End Function

尝试使用dblHours=DateDiff(“n”,strStart,DateAdd(“h”,12,strengd))按分钟计算(或s表示秒),并转换回hoursFirst和formost,您正在使用
Integer
作为整数,并试图通过0.5。这将成为一个0。将其更改为
Double
。谢谢Alex!!!这就是我需要的。我试着用“m”,但没用,因为我忘了“m”已经有一个月了。你说得对。我从来没有接触过代码的这一部分,因为Previor函数在其当前形式下不可用。我说过我讨厌星期一吗?@JohnMaher不客气。如果您正在查找内置函数的语法/用法,则始终可以在编辑器中选择该单词,然后按功能键F1。请尝试使用dblHours=DateDiff(“n”,strStart,DateAdd(“h”,12,strengd))按分钟(或秒)计算并转换回hoursFirst和formost,您正在使用
Integer
作为输入,并试图通过0.5。这将成为一个0。将其更改为
Double
。谢谢Alex!!!这就是我需要的。我试着用“m”,但没用,因为我忘了“m”已经有一个月了。你说得对。我从来没有接触过代码的这一部分,因为Previor函数在其当前形式下不可用。我说过我讨厌星期一吗?@JohnMaher不客气。如果要查找内置函数的语法/用法,可以始终在编辑器中选择该单词,然后按功能键F1。