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中的任何数据类型断点,这是挂断的位置,但这是一个很大的数组)