我正在为变量赋值,其中该值是数字或对象实例,具体取决于服务器请求的结果,如下所示:
Sub assignVar()
Dim v As Variant
v = getValue
End Sub
Function getValue() As Variant
Dim result As Boolean
result = PostSomethingToServer()
If result Then
getValue = 1
Else
Set getValue = New Dictionary
getValue.Add "a", 1
End If
End Function
如果我拨打assignVar(true)
,这可以正常工作,但如果我拨打assignVar(false)
,则会收到错误消息:
Wrong number of arguments or invalid property assignment
这是预期的,因为如果getValue()
返回一个对象,则应将其指定为set v = getValue
。但如果我这样写,那么我会收到Type mismatch
错误,因为我试图使用Set
语句分配一个整数。
如何确保为v
的返回值正确分配getValue()
?
答案 0 :(得分:1)
现在我通过添加a
类来解决这个问题:
ReturnValue
这样,我可以按如下方式重写测试方法:
Option Explicit
Public value As Variant
Public valueIsObject As Boolean
Public Sub setup(value As Variant)
If IsObject(value) Then
Set Me.value = value
valueIsObject = True
Else
Me.value = value
valueIsObject = False
End If
End Sub