ReDim保留错误

时间:2014-11-19 16:30:34

标签: vba excel-vba excel-2010 excel

我正在尝试重新保存二维数组。在我的代码的最顶端,我有:

Dim BayQuestionArray() As Variant
Dim numberofbay As Double

我有两个按钮,第一个按钮用于初始化数组大小:

numberofbay = 1
ReDim Preserve BayQuestionArray(numberofbay, 37)

,第二个按钮用于升大数组

ReDim Preserve BayQuestionArray(numberofbay + 1, 37)

第二个按钮不起作用,它一直给我一个错误,说运行时错误9下标超出范围。为什么呢?

2 个答案:

答案 0 :(得分:9)

使用Preserve调整数组变量的大小(声明为变体,而不是Variant)时,您只能更改最后一维上边界。您需要转置数组,或使用锯齿状数组或其他结构,如字典/集合。

答案 1 :(得分:-1)

由于安全补丁,最近更改了“redim preserve”命令。此补丁使用在补丁之前编写的“redim preserve”来影响所有脚本。在补丁之前,您的代码将按照书面形式工作。

更改数组下限的所有“redim preserve”命令不再起作用。看起来好像代码只是忽略了可以使受影响的脚本/代码的诊断变得困难的行,因为“redim preserve”没有按预期工作的第一个警告将发生溢出错误,可能远离“redim preserve” “命令。

有关提示安全补丁的漏洞的更多信息(并证明我没有这样做),您可以参考:

http://securityintelligence.com/ibm-x-force-researcher-finds-significant-vulnerability-in-microsoft-windows/#.VIHWkSco6M8