gpt4 book ai didi

vba - Excel 2010 Redim 保留崩溃

转载 作者:行者123 更新时间:2023-12-01 18:19:01 24 4
gpt4 key购买 nike

通过在全新工作簿的 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 中启动空项目 Pane ),并且“redim v(,1 to M)”也使我邻居的机器崩溃 - 所以不仅仅是我。

我想知道这种行为是否发生在其他人身上,并且将其发布,以防万一它可以帮助其他人节省我在确定错误之前重建工作簿所浪费的时间。

最佳答案

崩溃是由于第一个维度的遗漏(或者更好的措辞,nLastDimension - 1 处的遗漏)以及在后续维度中使用 TO 关键字而发生的。

我拿了你的小样本并试图让它不崩溃:P

Option Explicit 'Just wanted to make the Interpreter more picky

Private Sub test()
'Go through some basic declaration
Dim v() As Variant
Dim M As Integer
Dim New_Value As Integer

ReDim v(2, 2) 'No Problem
ReDim Preserve v(1, 1 To M) ' No Problem
ReDim Preserve v(1 To M) ' No Problem
ReDim Preserve v(,400) 'Compile Error

'Crash on this
'ReDim Preserve v(,1 To M) 'BOOM!!!
'and this:
'ReDim Preserve v(,1 To 2) 'BOOM!!!
'and this:
'ReDim Preserve v(1 to 5,,1 To 2) 'BOOM!!!


End Sub

底线是,“BOOM”行之前的任何代码都不会缓冲下降。我能理解编译器错误,但 VBA 未编码来处理

ReDim myVar(,x TO y)

我使用的是 Office 2007。

<小时/>

为了踢球和笑,我还在以下地方尝试了这段代码:

  1. 访问 '97(崩溃)
  2. Visual Basic 5 IDE(崩溃)
  3. OpenOffice Calc 的基本环境。 (见下文)

它没有崩溃,但我收到以下两个编译器错误:首先这个: enter image description here

然后这个:

enter image description here

关于vba - Excel 2010 Redim 保留崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8931056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com