7,786
社区成员
发帖
与我相关
我的任务
分享
'通过设置InitNULL函数的 RetType和DefaultValue参数的值可以分别返回字符串、数字、对象等类型和默认返回值
Private Sub Form_Load()
Dim V As Variant
Dim S As String
Dim L As Long
Dim O As Object
V = Null
S = InitNULL(V) '默认为返回字符串类型,默认返回值是空值""
MsgBox "测试 InitNULL(V):" & S
S = InitNULL(V, , "默认文本") '默认为返回字符串类型,默认返回值设置为"默认文本"
MsgBox "测试 InitNULL(V, , ""默认文本""):" & S
L = InitNULL(V, 1) '设置返回为数字类型,默认返回值为0
MsgBox "测试 InitNULL(V, 1):" & L
L = InitNULL(V, 1, 138) '设置返回为数字类型,默认返回值设置为138
MsgBox "测试 InitNULL(V, 1):" & L
Set O = InitNULL(V, 2) '设置返回为对象类型,默认返回值为Nothing
MsgBox "测试 InitNULL(V, 2):" & (O Is Nothing)
Set O = InitNULL(V, 2, Me) '设置返回为对象类型,默认返回值为当前窗口对象
MsgBox "测试 InitNULL(V, 2):" & O.Caption
End Sub
Private Function InitNULL(hValue As Variant, Optional RetType As Long = 0, Optional DefaultValue As Variant = "") As Variant
Select Case RetType
Case 0: InitNULL = IIf(VarType(hValue) = vbNull, DefaultValue, hValue)
Case 1:
DefaultValue = IIf(IsNumeric(DefaultValue), DefaultValue, 0)
InitNULL = IIf(VarType(hValue) = vbNull, DefaultValue, IIf(IsNumeric(hValue), hValue, DefaultValue))
Case 2:
Set DefaultValue = IIf(IsObject(DefaultValue), DefaultValue, Nothing)
Set InitNULL = IIf(IsObject(hValue), hValue, DefaultValue)
End Select
End Function