Compartir a través de


ReDim no válido

No se puede cambiar la dimensión de cada matriz. Este error tiene las siguientes causas y soluciones:

  • Una variable se declaró implícitamente como tipo Variant y se intentó usar ReDim para cambiarla a una matriz.

    Un tipo de datos Variant puede contener una matriz pero si no se declara explícitamente, no se puede usar ReDim para convertirlo en una matriz. Declare el tipo Variant antes de usar ReDim para especificar el número de elementos que puede contener. Por ejemplo, en el siguiente código, ReDim AVar(10) causa un error ReDim no válido mientras que ReDim BVar(10) no lo causa:

AVar = 1    ' Implicit declaration of AVar. 
ReDim AVar(10)    ' Causes invalid ReDim error. 
'. 
'. 
'. 
Dim BVar    ' Explicit declaration of BVar. 
ReDim BVar(10)    ' No error. 
  • Se intentó usar ReDim para cambiar más de una dimensión de una matriz contenida en un tipo Variant. Solo se puede usar ReDim para cambiar el tamaño de la última dimensión de una matriz en un tipo Variant. Para crear una matriz con varias dimensiones que se pueden redimensionar, la matriz no puede estar contenida en un tipo de datos Variant y se debe declarar de manera normal.

  • Use ReDim solo para cambiar el número de elementos de una matriz normal, no el tipo de esos elementos. Si desea una matriz en la que puede cambiar los tipos de elementos, use una matriz contenida en un tipo de datos Variant. Si primero declara la matriz, el cambio de los tipos y del número de sus elementos se puede realizar de la siguiente manera:

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. 

  • Se intentó usar ReDim con una matriz que es miembro de un objeto Automation.

    Quite ReDim.

    Nota Si no especifica un tipo para una variable, la variable recibe el tipo predeterminado, Variant. Esto no siempre es evidente. Por ejemplo, el siguiente código declara dos variables: la primera, MyVar, es un tipo de datos Variant; la segunda, AnotherVar, es un tipo de datos Integer.

Dim MyVar, AnotherVar As Integer 

Para más información, seleccione el elemento en cuestión y presione F1 (en Windows) o AYUDA (en Macintosh).

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.