Compartilhar via


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, mas ReDim 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.