如果该函数可能返回一个对象,如何为变量赋值函数?

时间:2017-09-29 21:37:26

标签: vba

我正在为变量赋值,其中该值是数字或对象实例,具体取决于服务器请求的结果,如下所示:

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()

1 个答案:

答案 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