excel - 如何在 VBA 中的函数中返回和使用多个值
问题描述
我想编写一个用户定义的函数(UDF),A
它返回多个值(比如说 3)。然后我想在另一个 UDF 中使用这些值,B
.
我一直在关注
https://www.geeksengine.com/article/vba-function-multiple-values2.html
了解哪些 VBA 数据结构将支持这一点。我最初使用 acollection
来存储来自 UDF 的多个值A
,但在我的用例中,索引 0、1 和 2 有一些值,所以我想使用 aarray
而不是 acollection
以便我可以使用基数 0 进行索引(我不是确定这是否可行collections
- 似乎第一个元素是.Item(1)
)。
问题是,我似乎无法在 UDF B 中检索 UDF A 返回的数组的值。
一个最小(非)工作示例:
Function A() As Variant
Dim arr(3) As Variant
arr(0) = "zero"
arr(1) = "one"
arr(2) = "two"
A = arr
MsgBox "Function A"
MsgBox arr(0)
End Function
Function B() As Variant
Dim arry(3) As Variant
Set arry = A()
MsgBox "Function B"
MsgBox arry(0)
End Function
Sub debugfunc()
MsgBox B()
End Sub
我都试过了Set arry = A()
和arry = A()
。运行 debugfunc 子程序时,两者都会产生“不能分配给数组”错误。
有任何想法吗?
解决方案
您不使用Set
并且需要相同类型的动态数组来接收函数结果:
Dim arry() As Variant
arry = A()
推荐阅读
- pdf - 是否可以自动检查 PDF 是否遵循 PDF/UA 标准?
- shell - 如何在期望脚本的发送中使用 shell 命令的输出
- sql - SQL:根据表中保存的计算对每一行进行不同的计算
- android - 打开应用程序后 Flutter 崩溃
- python - 在 Vagrant 中安装 django-cron 时权限被拒绝
- db2 - DB2:LUW:Windows(OS) 无法调用 Java UDF
- pandas - 更改熊猫数据框的架构
- angular - 如何避免两次调用观察方法?
- python - 请求翻译时似乎未使用上传的词汇表
- c++ - 带有 C++ Builder 10.x 的 FASTMM 调试版本