【发布时间】:2020-11-09 12:43:57
【问题描述】:
以下最小示例崩溃,直到 Erase 语句被注释掉。为什么?
(我找不到这个记录。)
Sub Test()
Dim a1() As Integer
ReDim a1(0 To 2)
Erase a1
Debug.Print a1(1) ' Subscript out of range (Run-time error '9')
Debug.Print LBound(a1) ' Subscript out of range (Run-time error '9')
Debug.Print UBound(a1) ' Subscript out of range (Run-time error '9')
End Sub
我应该用For i = LBound(a1) to UBound(a1): a1(i) = 0: Next i替换Erase吗?
【问题讨论】:
-
原因在 Erase 语句的 MS 帮助的第一行中给出。在 VBA IDE 中,将光标放在 Erose 语句上,然后按 F1。这将打开该关键字的相关 MS 帮助页面。
-
@freeflow – 我在发布问题时链接了上面的那个页面。不过谢谢。看来我需要刷新一下动态数组的话题了。
-
“崩溃”是什么意思?您应该只收到一个错误“解释”,在某种程度上,内存已被释放并且不存在任何要返回的内容......
标签: arrays vba ms-access erase