4

我在Win7下使用Access 2010。我发现我可以在运行时通过简单地调用ReDim arrayName(x)而不首先将数组声明为Dim arrayName().

Sub FooBar()
   ReDim myArray(2)
   myArray(0) = "This is the first string in myArray."
   myArray(1) = "This is the second string in myArray."
   myArray(2) = "And this is the last string in myArray."
   MsgBox myArray(0) & vbCrLf & myArray(1) & vbCrLf & myArray(2)
End Sub

有什么理由我不应该使用这个快捷方式吗?

干杯!

4

1 回答 1

7

那很有意思。 这个 MSDN 页面确认了您所看到的内容:这是一个引用:

“您可以使用 ReDim 语句在过程中隐式声明一个数组。注意不要在使用 ReDim 语句时拼错数组的名称。即使模块中包含 Option Explicit 语句,第二个数组也会创建的。”

此页面解释了Redim创建一个新数组并将现有数组复制到其中(假设有一个):

http://msdn.microsoft.com/en-us/library/w8k3cys2%28v=vs.80%29.aspx

至于你的问题,如果你这样做,我会说不,因为它令人困惑,并且确实将你的代码打开到 Option Explicit 不会捕获的错误。

足够合理,Redim Preserve不会表现出这种行为。

于 2012-10-16T04:20:52.180 回答