ReDim 无效
不是每个数组都能重新设置维度。 此错误的原因和解决方案如下:
一个变量隐式声明为 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。