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是Error 2015。

最佳答案

据我所知,这似乎与解决问题的方法差不多。从VBA执行功能间调用

如果你做这样的事情

Public Function funBA(n As Variant) As Variant
    funBA = funB(funA(n))
End Function


它似乎可以工作到n = 2 ^ 24 = 2 ^ 8 ^ 3(看起来不像VBA中的任何数据类型断点,这是挂断的位置,但这是一个很大的数组)

07-24 20:25