Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Nem todas as matrizes podem ser redimensionadas. Esse erro tem as seguintes causas e soluções:
Uma variável foi declarada implicitamente como Variante e tentou utilizar ReDim para alterá-la para uma matriz.
Uma Variante pode conter uma matriz, mas se não for explicitamente declarada, não pode utilizar ReDim para torná-la numa matriz. Declare a Variante antes de utilizar ReDim para especificar o número de elementos que pode conter. Por exemplo, no código seguinte,
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.
Tentou utilizar o ReDim para alterar mais do que uma dimensão de uma matriz contida numa Variante. Só pode utilizar ReDim para alterar o tamanho da última dimensão de uma matriz numa Variante. Para criar uma matriz com múltiplas dimensões que podem ser redimensionadas, a matriz não pode ser contida numa Variante e tem de a declarar da forma normal.
Utilize ReDim apenas para alterar o número de elementos numa matriz normal e não o tipo desses elementos. Se quiser uma matriz na qual possa alterar os tipos dos elementos, utilize uma matriz contida numa Variante. Se declarar primeiro a matriz, pode alterar os tipos e o número dos respetivos elementos da seguinte forma:
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.
Tentou utilizar ReDim com uma matriz que é membro de um objeto de Automatização.
Remova o ReDim.
Nota Se não especificar um tipo para uma variável, a variável recebe o tipo predefinido Variante. 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.