如何修改这些函数以使 Null 值返回为零?
Function MinOfList(ParamArray varValues()) As Variant
Dim i As Integer 'Loop controller.
Dim varMin As Variant 'Smallest value found so far.
varMin = Null 'Initialize to null
For i = LBound(varValues) To UBound(varValues)
If IsNumeric(varValues(i)) Or IsDate(varValues(i)) Then
If varMin <= varValues(i) Then
'do nothing
Else
varMin = varValues(i)
End If
End If
Next
MinOfList = varMin
End Function
Function MaxOfList(ParamArray varValues()) As Variant
Dim i As Integer 'Loop controller.
Dim varMax As Variant 'Largest value found so far.
varMax = Null 'Initialize to null
For i = LBound(varValues) To UBound(varValues)
If IsNumeric(varValues(i)) Or IsDate(varValues(i)) Then
If varMax >= varValues(i) Then
'do nothing
Else
varMax = varValues(i)
End If
End If
Next
MaxOfList = varMax
End Function
Run Code Online (Sandbox Code Playgroud)
根据 Brad 的评论,该解决方案仅适用于 Microsoft Access。
一种廉价的方法是使用 nz 函数
NZ(VariableName, 0)
Run Code Online (Sandbox Code Playgroud)
MinOfList 函数结束:MinOfList = NZ(varMin, 0)
MaxOfList 函数结束:MaxOfList = NZ(varMax, 0)
这是一个模仿 NZ 功能的快速 Nz 实现:
Public Function Nz( Value As Variant, ValueIfNull As Variant ) As Variant
Nz = IIf(IsNull(Value), ValueIfNull, Value)
End Function
Run Code Online (Sandbox Code Playgroud)