gpt4 book ai didi

vba - 将函数结果写入变量,其中结果可以是对象

转载 作者:行者123 更新时间:2023-12-02 10:40:15 25 4
gpt4 key购买 nike

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

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

关于vba - 将函数结果写入变量,其中结果可以是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51080637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com