我正在尝试重新保存二维数组。在我的代码的最顶端,我有:
Dim BayQuestionArray() As Variant
Dim numberofbay As Double
我有两个按钮,第一个按钮用于初始化数组大小:
numberofbay = 1
ReDim Preserve BayQuestionArray(numberofbay, 37)
,第二个按钮用于升大数组
ReDim Preserve BayQuestionArray(numberofbay + 1, 37)
第二个按钮不起作用,它一直给我一个错误,说运行时错误9下标超出范围。为什么呢?
答案 0 :(得分:9)
使用Preserve调整数组变量的大小(声明为变体,而不是Variant)时,您只能更改最后一维的上边界。您需要转置数组,或使用锯齿状数组或其他结构,如字典/集合。
答案 1 :(得分:-1)
由于安全补丁,最近更改了“redim preserve”命令。此补丁使用在补丁之前编写的“redim preserve”来影响所有脚本。在补丁之前,您的代码将按照书面形式工作。
更改数组下限的所有“redim preserve”命令不再起作用。看起来好像代码只是忽略了可以使受影响的脚本/代码的诊断变得困难的行,因为“redim preserve”没有按预期工作的第一个警告将发生溢出错误,可能远离“redim preserve” “命令。
有关提示安全补丁的漏洞的更多信息(并证明我没有这样做),您可以参考: