gpt4 book ai didi

arrays - 数组大小限制在 VBA 中传递数组参数

转载 作者:行者123 更新时间:2023-12-02 07:28:28 28 4
gpt4 key购买 nike

Excel-VBA 2007 对作为参数传递的数组大小似乎有 64k 的限制。

有人知道修复或解决方法吗?

代码如下:

Public Function funA(n)
Dim ar()
ReDim ar(n)
funA = ar
End Function

Public Function funB(x)
funB = UBound(x)
End Function

来自 Excel:

=funB(funA(2^16-1))   '65536 as expected

=funB(funA(2^16)) 'Gives a #VALUE

从内部看,funA() 工作正常,但是传递给 funB 时,参数 x 是错误 2015。

最佳答案

我认为这是电子表格单元格本身的限制,而不是 VBA 的限制。 Excel 可以在函数之间传递大于 2^16 的数组,但显然它不能在单元格内包含该大小的数组。

作为实验,突出显示单元格公式中的 funA(2^16) 并按 F9 - 它会给您一个 '#VALUE!' 错误。

由于公式在启动 funB 之前已经计算了 funA 的结果,因此它会尝试在已经存在的函数上运行 funB计算出错误。

这似乎是一种解决方法,就像 Brad 发布的那样(即在其内部计算 funB(funA(n)) 的第三个函数)将单元格排除在等式之外,直到计算完成,所以它工作正常。

关于arrays - 数组大小限制在 VBA 中传递数组参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11237195/

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