vba – 将函数的结果写入变量,其中result可以是一个对象

如果我有一个可以返回对象或基本类型的函数 – 在其中我可以执行以下操作来处理这两种情况:

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直接写入变量.函数然后没有返回值,所以可以成为Sub:

Sub Result(ByRef writeTo As Variant)
    '... get item - the return value
    If IsObject(item) Then
        Set writeTo = item
    Else
        writeTo = item
    End If
End Sub

叫起来像

Dim myResult As Variant
Result myResult 'overwrites whatever writeTo contains

转载注明原文:vba – 将函数的结果写入变量,其中result可以是一个对象 - 代码日志