¿Cómo corregir el error de Excel VBA “Subíndice fuera de rango” (Error de tiempo de ejecución 9)?
Resumen: El error de ejecución 9 en Excel suele producirse cuando se utilizan diferentes objetos en un código o el objeto que está intentando utilizar no está definido. Este post discutirá las razones detrás del error de Excel VBA "Subscript out of Range" y las soluciones para resolver el problema. También se mencionará una herramienta de reparación de Excel que puede ayudar a solucionar el error si se produce debido a la corrupción en la hoja de cálculo.
Muchos usuarios han informado de que se encuentran con el error “Subíndice fuera de rango” (error de ejecución 9) al utilizar código VBA en Excel. El error suele producirse cuando el objeto al que se hace referencia en un código no está disponible, se ha eliminado o no se ha definido antes. A veces, ocurre si has declarado un array en el código pero olvidaste especificar la sentencia DIM o ReDIM para definir la longitud del array.
Causas del error de ejecución 9 de VBA: subíndice fuera de rango
El error ‘Subíndice fuera de rango’ en Excel puede ocurrir debido a varias razones, tales como:
- El objeto que intenta utilizar en el código VBA no se ha definido antes o se ha eliminado.
- Se ha introducido una sintaxis incorrecta en la declaración del array.
- Escritura incorrecta del nombre de la variable.
- Hace referencia a un elemento de matriz incorrecto.
- Ha introducido un nombre incorrecto de la hoja de cálculo a la que intenta hacer referencia.
- La hoja de cálculo a la que intenta llamar en el código no está disponible.
- Se ha especificado un elemento no válido.
- No se especifica el número de elementos de una matriz.
- El libro de trabajo en el que intenta utilizar VBA está dañado.
Métodos para corregir el error de Excel VBA ‘Subíndice fuera de rango’
A continuación se indican algunas soluciones que puede probar para solucionar el error de ejecución 9 en Excel.
Método 1: Compruebe el nombre de la hoja de cálculo en el código
A veces, Excel arroja el error de ejecución 9: Subíndice fuera de rango si el nombre de la hoja de cálculo no se define correctamente en el código. Por ejemplo – Al intentar copiar el contenido de una hoja de Excel (emp) a otra hoja (emp2) a través de código VBA, se ha mencionado por error el nombre incorrecto de la hoja de trabajo (ver el código de abajo).
Private Sub CommandButton1_Click() Worksheets(“emp”).Range(“A1:E5”).Select Selection.Copy Worksheets(“emp3”).Activate Worksheets(“emp3”).Range(“A1:E5”).Select ActiveSheet.Paste Application.CutCopyMode = False End Sub |
Cuando ejecute el código anterior, Excel arrojará el error Subíndice fuera de rango.
Por lo tanto, compruebe el nombre de la hoja de cálculo y corríjalo. Aquí están los pasos:
- Vaya a la pestaña Diseño de la sección Desarrollador.
- Haga doble clic en el botón Comando.
- Compruebe y modifique el nombre de la hoja de cálculo (por ejemplo, de “emp” a “emp2”).
- Ahora ejecuta el código.
- El contenido de la hoja de cálculo “emp” se copiará en “emp2” (véase más abajo).
Método 2: Comprobar el rango de la matriz
El error de VBA “Subíndice fuera de rango” también se produce si has declarado un array en un código pero no has especificado el número de elementos. Por ejemplo – Si ha declarado una matriz y se olvidó de declarar la variable de matriz con elementos, obtendrá el error (véase más adelante):
Para solucionarlo, especifique la variable array:
Sub FillArray() Dim curExpense(364) As Currency Dim intI As Integer For intI = 0 to 364 curExpense(intI) = 20 Next End Sub |
Método 3: Cambiar la configuración de seguridad de las macros
El error de tiempo de ejecución 9: Subíndice fuera de rango también puede ocurrir si hay un problema con las macros o si las macros están desactivadas en la Configuración de seguridad de macros. En tal caso, puede comprobar y cambiar la configuración de las macros. Siga estos pasos:
- Abra su Microsoft Excel.
- Vaya a Archivo > Opciones > Centro de confianza.
- En Centro de confianza, seleccione Configuración del Centro de confianza.
- Haga clic en Configuración de macros, seleccione Activar todas las macros y, a continuación, haga clic en Aceptar.
Método 4: Repare su archivo Excel
El nombre o formato del archivo Excel o el nombre de los objetos puede cambiar debido a la corrupción en el archivo. Cuando los objetos no se identifican en un código VBA, puede aparecer el error Subíndice fuera de rango. Puede utilizar la utilidad Abrir y reparar de Excel para reparar el archivo dañado. Para utilizar esta utilidad, siga estos pasos:
- En su MS Excel, haga clic en Archivo > Abrir.
- Vaya a la ubicación donde está almacenado el archivo afectado.
- En el cuadro de diálogo Abrir, seleccione el libro dañado.
- En el menú desplegable Abrir, haga clic en Abrir y reparar.
- Aparecerá un mensaje pidiéndole que repare el archivo o extraiga datos de él.
- Haga clic en la opción Reparar para extraer los datos tanto como sea posible. Si el botón Reparar falla, entonces haga clic en el botón Extraer para recuperar los datos sin fórmulas ni valores.
Si la utilidad “Abrir y reparar” no consigue reparar el archivo de Excel dañado/corrompido con macros, pruebe con una herramienta avanzada de reparación de Excel, como Stellar Repair for Excel. Puede reparar fácilmente un libro de Excel gravemente dañado y recuperar todos los elementos, incluidas macros, comentarios de celdas, tablas, gráficos, etc. con una integridad del 100%. La herramienta es compatible con todas las versiones de Microsoft Excel.
Conclusión
Es posible que experimente el error “Subíndice fuera de rango” al utilizar VBA en Excel. Puede seguir las soluciones discutidas en este blog para solucionar el error. Si el archivo de Excel está dañado, puede utilizar Stellar Repair for Excel para repararlo. Es un potente software que puede ayudar a solucionar todos los problemas que se producen debido a la corrupción en el archivo de Excel. Ayuda a recuperar todos los datos de los archivos corruptos de Excel (.xls, .xlsx, .xltm, .xltx y .xlsm) sin cambiar el formato original. La herramienta es compatible con Excel 2021, 2019, 2016 y versiones anteriores.