Sin memoria en VBA
En este artículo, discutiremos el error Memoria insuficiente
en VBA con la ayuda de algunos ejemplos.
Error Memoria insuficiente
en VBA
VBA da un error de Memoria insuficiente
cuando Excel ha utilizado todos los recursos de nuestro dispositivo mientras ejecutaba la macro. Se quedará sin memoria para calcular y ejecutar el código.
Ocurrirá cuando muchos de los programas se estén ejecutando en el dispositivo y estemos intentando ejecutar la macro extensa en Excel, o tal vez podamos crear un bucle perpetuo cuando el error haya ocurrido en Excel.
Cuando alguien está trabajando con un libro de trabajo que contiene tantas hojas de trabajo y tantas filas, se produce un error de “Memoria insuficiente” en VBA. Ocurrirá un error de memoria insuficiente
si creamos un bucle que funcionará con una cantidad significativa de datos.
Si trabajaremos con muchos objetos y configuraremos todo con la sentencia SET
, pero si no borraremos las referencias a los objetos entre bucles o procedimientos. Vamos a discutir con la ayuda de un ejemplo.
El código se muestra a continuación en el bucle, lo que podría causar un error de Memoria insuficiente
si abrimos varios archivos con varias hojas.
Sub TestMemory()
Dim wb As Workbook
Dim ws As Worksheet
Dim i As Single
For Each wb In Application.Workbooks
For Each ws In wb.Sheets
Do Until ActiveCell = "A1048576"
ActiveCell = 1 + i
i = i + 1
ActiveCell.Offset(1, 0).Select
Loop
Next ws
Next wb
End Sub
Liberar objetos en VBA
Al trabajar con bucles y objetos, debemos asegurarnos de establecer el objeto en NADA
una vez que lo usamos. Liberaremos la memoria si ya no será necesaria.
set str = ""
set num = []
Nos aseguraremos de que solo se esté ejecutando una instancia de Excel. Si trabajamos con archivos enormes y una gran cantidad de datos, debemos comprobar que no tengan muchas sesiones abiertas en Excel.
Si es necesario, ábralo una vez. Para verificar esto, debemos ir al Administrador de tareas y verificar cuántas instancias de Excel se están ejecutando en ese momento.
Presione Ctrl+Alt+Eliminar en el teclado y luego haga clic en el Administrador de tareas para asegurarse de que solo se esté ejecutando una instancia de Excel.
También podemos verificar en el Administrador de tareas que no hay ningún ejemplo de Excel ejecutándose detrás de escena. Mire hacia abajo en el Administrador de tareas hasta que vea Procesos en segundo plano y asegúrese de que Excel no esté en ese estado de ánimo para los proyectos.
Compruebe el tamaño de su registro de Excel. Las líneas y segmentos frecuentes se encuentran debajo de los utilizados en sus hojas de trabajo.
El éxito implica la memoria en estas celdas, independientemente de si esas celdas están vacías. Verifique el tamaño del documento presionando CTRL+SHIFT+END en la consola para ver dónde aterriza el puntero de su celda.
Suponiendo que caiga bien debajo de la última celda que está utilizando, asegúrese de borrar todas las líneas y secciones vacías sobre el puntero de la celda y luego vuelva a guardar la lista. Disminuirá el tamaño de su documento de Excel.
Formas alternativas de comprobar la memoria en VBA
Existen diferentes formas alternativas de liberar la memoria en Excel. La idea brillante es cerrar Excel si no lo está usando y luego abrirlo más tarde.
Liberará cualquier memoria que esté almacenada en Excel, y tiende a retener memoria incluso si el libro de trabajo no está abierto.
Asegúrese continuamente de que su versión de Office sea moderna al verificar si hay actualizaciones en su dispositivo y verificar si hay complementos de VBA que usará y que aún no está utilizando. Puede desinstalarlos para liberar significativamente más memoria.