不是每个数组都能重新设置维度。 此错误的原因和解决方案如下:
- 一个变量隐式声明为 Variant, 而您试图用 ReDim 将它更改为数组。 - Variant 可以包含数组,但如果没有显式声明它,则无法使用 ReDim 将它更改为数组。 使用 ReDim 前需要声明 Variant 以指定它可以包含的元素数。 例如,在以下代码中, - ReDim AVar(10)导致一个无效的 ReDim 错误,而- ReDim BVar(10)则没有:
AVar = 1    ' Implicit declaration of AVar. 
ReDim AVar(10)    ' Causes invalid ReDim error. 
'. 
'. 
'. 
Dim BVar    ' Explicit declaration of BVar. 
ReDim BVar(10)    ' No error. 
- 您试图使用 ReDim 更改 Variant 内所包数组的多个维度。 只能使用 ReDim 更改 Variant 中数组的最后一维的大小。 要创建可以重新设置维度的多维度组,则该数组不能包含在 Variant 内,并且您必须以通常方式声明它。 
- 使用 ReDim 仅更改普通数组中的元素数,而不能更改这些元素的类型。 如果您希望有一个可以更改其中元素类型的数组,可使用包含在 Variant 中的数组。 如果先声明数组,则可以更改其元素的类型和数目,如下所示: 
Dim MyVar As Variant    ' Declare the variable. 
ReDim MyVar(10) As String    ' ReDim it as array of String subtypes. 
ReDim MyVar(20) As Integer    ' ReDim it as array of Integer subtypes. 
ReDim MyVar(5) As Variant    ' ReDim it as array of Variant subtypes. 
- 您试图将 ReDim 用于一个属于 Automation 对象成员的数组。 - 删除 ReDim 。 - 注意 如果未为变量指定类型,该变量将接收默认类型 Variant。 此情况并不总是很明显。 例如,下面的代码声明两个变量,第一个是 - MyVar,其类型为 Variant ,第二个是- AnotherVar,其类型则为 Integer 。
Dim MyVar, AnotherVar As Integer 
有关其他信息,选择有问题的项并按 F1(在 Windows 中)或 HELP(在 Macintosh 上)。
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。