【发布时间】:2012-01-19 18:06:58
【问题描述】:
通过在全新工作簿的 IDE 中输入以下内容,我能够以某种方式使 Excel 2010 崩溃:
private sub foo
redim v(,1 to 3)
好的,你不太可能输入那个......但这是真正发生的事情:
private sub foo
dim v(1 to N, 1 to M)
...
M = New_Value
redim preserve v(,1 to M) ' seemed reasonable ... then CRASH !!!
有趣的是,VBA 要求您明确使用 2D redim 保留的第一个参数(因为您不允许更改第一个维度)。但是当一个简单的语法错误的惩罚是硬崩溃时,这并不好笑。这是一个环境相当干净的 IT 部门(没有安装插件,在 IDE 中启动 w 空项目窗格),并且“redim v(,1 to M)”也让我邻居的机器崩溃了——所以不仅仅是我。
我想知道这种行为是否发生在其他人身上,并发布它以防万一它可以节省其他人我浪费在重建工作簿直到我确定错误的时间。
【问题讨论】:
-
这很有趣。我刚刚将您的示例 #2 粘贴到一个新的 Excel 模块中,整个事情都崩溃了!也许如果我们有足够多的人发送了这个,有人会修复它:)
-
是的,它也给我造成了崩溃。 Excel 2010。
-
顺便说一句,我刚刚从 MVP Connect Services 提交了上述错误。
-
这个错误也存在于 Excel 2003 中。所以这似乎是 10 年来第一次有人试图从 Redim 语句中省略第一个维度。顺便说一句,您已将
v声明为固定数组而不是动态数组。我不记得曾经尝试过,但我认为不可能重新调整固定数组。 -
我的 2016 年也崩溃了