ReDim inválido
Nem todas as matrizes podem ser redimensionadas. Esse erro tem as seguintes causas e soluções:
Uma variável foi declarada implicitamente como Variant e você tentou usar ReDim para alterá-la em uma matriz.
Uma Variant pode conter uma matriz, mas se ela não for declarada explicitamente, você não poderá usar ReDim para torná-la em uma matriz. Declare a Variant antes de usar ReDim para especificar o número de elementos que ela pode conter. Por exemplo, no código a seguir,
ReDim AVar(10)
causa um erro ReDim inválido, masReDim BVar(10)
não:
AVar = 1 ' Implicit declaration of AVar.
ReDim AVar(10) ' Causes invalid ReDim error.
'.
'.
'.
Dim BVar ' Explicit declaration of BVar.
ReDim BVar(10) ' No error.
Você tentou usar o ReDim para alterar mais de uma dimensão de uma matriz contida em uma Variant. Você só pode usar o ReDim para alterar o tamanho da última dimensão de uma matriz em uma Variant. Para criar uma matriz com várias dimensões que podem ser redimensionadas, a matriz não pode ser contida em uma Variant e você precisa declará-la da maneira normal.
Use ReDim apenas para alterar o número de elementos em uma matriz normal, não o tipo desses elementos. Se você quiser uma matriz na qual você pode alterar os tipos dos elementos, use uma matriz contida em uma Variant. Se você declarar a matriz primeiro, alterar os tipos e o número de seus elementos poderá ser realizado da seguinte maneira:
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.
Você tentou usar o ReDim com uma matriz que é membro de um objeto Automation.
Remova o ReDim.
Nota Se você não especificar um tipo para uma variável, a variável receberá o tipo padrão, Variant. Isso nem sempre é óbvio. Por exemplo, o seguinte código declara duas variáveis: a primeira,
MyVar
, é uma Variant; a segunda,AnotherVar
, é um Integer.
Dim MyVar, AnotherVar As Integer
Saiba mais selecionando o item em questão e pressionando F1 (no Windows) ou HELP (no Macintosh).
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.