如何解决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
解决方法
首先,如果将 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 举报,一经查实,本站将立刻删除。