微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ACCESS VBA:运行时错误94无效使用null

如何解决ACCESS VBA:运行时错误94无效使用null

Private Function getTMD(StartDate,EndDate,StartHour,EndHour) As Double
    
    Dim tempTMD As Integer
    tempTMD = 0
    diffDate = (EndDate - StartDate) - 1
    
If diffDate >= 1 Then
    tempTMD = diffDate * (1080)
    
    If TimeValue(StartHour) > TimeValue("06:00:00") Then
        tempTMD = tempTMD + DateDiff("n",TimeValue(StartHour),TimeValue("23:59:59")) + 1
        Debug.Print tempTMD

    Else
        tempTMD = 1080 + tempTMD
    
    End If
    If (TimeValue(EndHour) > TimeValue("06:00:00") And TimeValue(EndHour) <> TimeValue("23:59:00")) Then
        tempTMD = DateDiff("n",TimeValue("06:00:00"),TimeValue(EndHour)) + tempTMD
      
    ElseIf TimeValue(EndHour) = TimeValue("23:59:00") Then
    
        tempTMD = tempTMD + 1079
    End If
    
ElseIf diffDate = 0 Then
    If TimeValue(StartHour) > TimeValue("06:00:00") Then
        tempTMD = DateDiff("n",TimeValue("23:59:59")) + 1 + tempTMD
    Else
        tempTMD = DateDiff("n",TimeValue("23:59:59")) + 1 + tempTMD
    End If
    
    If TimeValue(EndHour) > TimeValue("06:00:00") And TimeValue(EndHour) <> TimeValue("23:59") Then
        tempTMD = DateDiff("n",TimeValue(EndHour)) + tempTMD
    ElseIf TimeValue(EndHour) = TimeValue("23:59:00") Then
        tempTMD = tempTMD + 1079
    End If
    
ElseIf diffDate = -1 Then
    If TimeValue(EndHour) > TimeValue("06:00:00") And TimeValue(StartHour) > TimeValue("06:00:00") Then
        tempTMD = DateDiff("n",TimeValue(EndHour))
       
    ElseIf TimeValue(EndHour) > TimeValue("06:00:00") And TimeValue(StartHour) <= TimeValue("06:00:00") Then
        tempTMD = DateDiff("n",TimeValue(EndHour))
    End If
End If
getTMD = Round((tempTMD / 60),2)

End Function

我有功能,但我在行中有错误

If (TimeValue(EndHour) > TimeValue("06:00:00") And TimeValue(EndHour) <> TimeValue("23:59:00")) Then
    tempTMD = DateDiff("n",TimeValue(EndHour)) + tempTMD

我尝试使用NZ函数,但仍然存在错误。您能帮我解决它吗??

解决方法

首先,如果将 Null 值传递给函数,则会发生这种情况。

为避免这种情况,请将它们声明为 Date

Private Function getTMD(StartDate As Date,EndDate As Date,StartHour As Date,EndHour As Date) As Double

,如果值可以为 Null ,则使用 Nz 决定要替换的值,例如:

 Value = getTMD(Nz(StartDate,#00:00#),Nz(EndDate,Nz(StartHour,Nz(EndHour,#00:00#))

接下来,您的操作似乎过于复杂,可能是由于使用了魔术数字。如果您尝试用简单的英语解释该功能的作用,则可以将其减少很多。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。