¿cómo solucionar el error 9 de vba (índice fuera de rango)?
Índice fuera de rango (tiempo de ejecución: error 9)
El error Subíndice fuera de rango (tiempo de ejecución: error 9) ocurre cuando hace referencia a un objeto o intenta usar una variable en el código que no existe en el código; en este caso, VBA mostrará este error. Como cada código que escribes es único, la causa del error sería.
En el siguiente ejemplo, intentó activar «Hoja1», que es un objeto. Pero como puede ver en el libro de trabajo, no existe ninguna hoja de trabajo con el nombre «Hoja1» (en su lugar tiene «Hoja2»), por lo que VBA muestra «Subíndice fuera de rango» para informarle que hay algún problema con el código.
Índice fuera de rango
Puede haber otra situación en la que tenga que enfrentar el error «Subíndice fuera de rango» cuando intenta declarar una matriz dinámica pero olvida usar las declaraciones DIM y ReDim para redefinir la longitud de la matriz.
Ahora, en el código anterior, tiene una matriz con el nombre «myArray» y, para hacerla dinámica, inicialmente dejamos la longitud de la matriz vacía. Pero antes de agregar un elemento, debe redefinir la longitud de la matriz usando la declaración ReDim.
Y este es el error que cometimos en el código anterior y VBA devolvió el error «Script fuera de rango».
Sub myMacro() Dim myArray() As Variant myArray(1) = "One" End Sub
¿Cómo arreglar el índice fuera de rango en Excel?
La mejor manera de lidiar con este índice fuera de rango es escribir códigos eficientes y asegurarse de depurar el código que ha escrito (paso a paso).
Cuando ejecuta un código paso a paso, es fácil para usted saber en qué línea de ese código tiene un error porque VBA le mostrará el mensaje de error 9 y resaltará esa línea en amarillo.
La otra cosa que puedes hacer es usar un «controlador de errores» para saltar a una línea de error específica cuando ocurra.
En el siguiente código, escribimos una línea para activar la hoja, pero antes de eso, usamos la instrucción goto para pasar al controlador de errores. En el controlador de errores tiene un cuadro de mensaje que le muestra un mensaje con el mensaje Err. Descripción de que se ha producido un error.
Entonces, cuando ejecuta este código y «Hoja1» no está en el libro de trabajo donde intenta activarlo. Le mostrará un cuadro de mensaje como el siguiente.
Y si la «Hoja1» está ahí, no habrá ningún mensaje.
Sub myMacro() Dim wks As Worksheet On Error GoTo myError Sheets("Sheet1").Activate myError: MsgBox "There's an error in the code: " & Err.Description & _ ". That means there's some problem with the sheet " & _ "that you want to activate" End Sub