Subíndice de VBA fuera de rango

Subíndice de Excel VBA fuera de rango

El subíndice fuera de rango es un error que encontramos en VBA cuando intentamos hacer referencia a algo o una variable que no existe en un código, por ejemplo, supongamos que no tenemos una variable llamada x pero usamos la función msgbox en x we encontrará un subíndice fuera de rango de error.

Se produce un error de subíndice de VBA fuera de rango porque el objeto al que intentamos acceder no existe. Este es un tipo de error en la codificación VBA y este es un "Error de tiempo de ejecución 9". Es importante comprender los conceptos para escribir código eficiente y es aún más importante comprender el error de su código VBA para depurar el código de manera eficiente.

Si su error de codificación y no sabe cuál es ese error, es cuando se ha ido.

Un médico no puede administrar medicamentos a su paciente sin saber cuál es la enfermedad. Seguro que tanto los médicos como los pacientes saben que hay una enfermedad (error), pero es importante entender la enfermedad (error) que administrarle medicamentos. Si puede comprender perfectamente el error, entonces es mucho más fácil encontrar la solución.

En una nota similar en este artículo, veremos uno de los errores importantes que generalmente encontramos con regularidad, es decir, el error "Subíndice fuera de rango" en Excel VBA.

¿Qué es el error de subíndice fuera de rango en Excel VBA?

Por ejemplo, si se refiere a la hoja que no está en el libro de trabajo, aparece el error de tiempo de ejecución 9: "Subíndice fuera de rango".

Si hace clic en el botón Finalizar, finalizará el subprocedimiento; si hace clic en depurar, lo llevará a la línea de código donde encontró un error y la ayuda lo llevará a la página del sitio web de Microsoft.

¿Por qué se produce un error de subíndice fuera de rango?

Como le dije como médico es importante encontrar al fallecido antes de pensar en la medicina. El error de subíndice fuera de rango de VBA ocurre cuando la línea de código no lee el objeto que ingresamos.

Para ver un ejemplo, mire la imagen de abajo, tengo tres hojas llamadas Hoja1, Hoja2, Hoja3.

Ahora en el código, he escrito el código para seleccionar la hoja "Ventas".

Código:

 Hojas de Sub Macro2 () ("Ventas"). Seleccione Finalizar Sub 

Si ejecuto este código usando la tecla F5 o manualmente, terminaré obteniendo el error de tiempo de ejecución 9: "Subíndice fuera de rango".

Esto se debe a que intenté acceder al objeto de la hoja de trabajo "Ventas" que no existe en el libro de trabajo. Este es un error de tiempo de ejecución porque este error ocurrió mientras se ejecutaba el código.

Otro error de subíndice común que obtenemos es cuando nos referimos al libro de trabajo que no está allí. Para ver un ejemplo, mire el siguiente código.

Código:

 Sub Macro1 () Dim Wb As Workbook Set Wb = Workbooks ("Hoja de salario.xlsx") End Sub 

El código anterior dice que la variable WB debe ser igual al libro de trabajo “Hoja de sueldos.xlsx”. Por ahora, este libro de trabajo no está abierto en mi computadora. Si ejecuto este código manualmente o mediante la tecla F5, obtendré el error de tiempo de ejecución 9: "Subíndice fuera de rango".

Esto se debe al libro de trabajo al que me refiero, que no está abierto a partir de ahora o no existe en absoluto.

Error de subíndice de VBA en matrices

Cuando declara la matriz como matriz dinámica y si no usa la palabra DIM o REDIM en VBA para definir la longitud de una matriz, generalmente obtenemos un error de subíndice de VBA fuera de rango. Por ejemplo, mire el siguiente código.

Código:

 Sub Macro3 () Dim MyArray () Siempre que MyArray (1) = 25 End Sub 

En lo anterior, he declarado la variable como una matriz, pero no he asignado un punto de inicio y finalización, sino que de inmediato le he asignado a la primera matriz el valor de 25.

Si ejecuto este código usando la tecla F5 o manualmente, obtendremos el error de tiempo de ejecución 9: "Subíndice fuera de rango".

Para solucionar este problema, necesito asignar la longitud de una matriz utilizando la palabra Redim.

Código:

 Sub Macro3 () Dim MyArray () Siempre que ReDim MyArray (1 a 5) MyArray (1) = 25 Fin 

Este código no da ningún error.

¿Cómo mostrar errores al final del código VBA?

Si no desea ver el error mientras el código está funcionando, pero necesita una lista de errores al final, entonces debe usar el controlador de errores "On Error Resume". Mira el siguiente código.

Código:

 Sub Macro1 () Dim Wb As Workbook On Error Resume Next Set Wb = Workbooks ("Hoja de sueldos.xlsx") MsgBox Err.Description End Sub 

Como hemos visto, este código arrojará el error de tiempo de ejecución 9: “Subíndice fuera de rango en Excel VBA . Pero tengo que usar el controlador de errores On Error Resume Next en VBA mientras ejecutamos el código, no obtendremos ningún mensaje de error, sino que en el cuadro de mensaje final me muestra la descripción del error como esta.

Puede descargar la plantilla de subíndice de Excel VBA fuera de rango aquí: - Plantilla de subíndice de VBA fuera de rango