如果我有一个可能返回对象或原始类型的函数,则可以在其中执行以下两种操作:
Function Result() As Variant 'may be object or not
'... get item - the return value
If IsObject(item) Then
Set Result = item
Else
Result = item
End If
End Function
但是,如何在不运行函数两次的情况下对存储
Result
的变量进行相同的测试?例如Dim myResult As Variant
If IsObject(Result) Then 'test return type of function
Set myResult = Result
Else
myResult = Result
End If
如
myResult = Result 'fails if Result returns object
Set myResult = Result 'fails if Result returns non-object
我正在尝试将一系列对象/非对象写入变量类型的数组
最佳答案
一种可行的解决方案是通过传递ByRef
直接写入变量。在标准模块中:
Property Let LetSet(ByRef variable As Variant, ByVal value As Variant)
If IsObject(value) Then
Set variable = value
Else
variable = value
End If
End Sub
叫像
Dim myResult As Variant
LetSet(myResult) = 123 'myResult = 123
LetSet(myResult) = New Collection 'Set myResult = New Collection