VBA – Erro Memória Insuficiente
In this Article
Este tutorial explicará o erro de memória insuficiente do VBA.
O erro de memória insuficiente do VBA ocorre quando o Excel usa todos os recursos de sua máquina ao executar uma macro e literalmente fica sem memória para continuar calculando ou executando o código. Isso pode ocorrer quando você tem muitos aplicativos em execução e tenta executar uma macro grande no Excel, ou talvez quando você tenha criado um loop perpétuo no Excel por engano.
(Consulte nosso Guia de Tratamento de Erros para obter mais informações sobre erros do VBA).
Causas do Erro de Memória Insuficiente
Um erro de memória insuficiente pode ocorrer quando se está trabalhando com uma pasta de trabalho que contém muitas planilhas e milhares de linhas. Se criarmos um loop que trabalhe com um grande volume de dados, poderá ocorrer um erro de falta de memória. Isso também pode ocorrer se estivermos trabalhando com vários objetos e definirmos cada objeto com uma instrução SET, mas não limparmos as referências aos objetos entre procedimentos ou loops.
Por exemplo, o loop a seguir pode definitivamente causar um erro de memória se você tiver vários arquivos abertos com várias planilhas.
Sub TestarMemoria()
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
Como Evitar um Erro de Memória Insuficiente
Liberação de Objetos
Se estivermos trabalhando com Loops e Objetos, precisamos nos certificar de que definimos o Objeto como NOTHING (NADA) depois que ele tiver sido usado e não for mais necessário – isso liberará memória
Certifique-se de que Apenas Uma Instância do Excel Esteja Sendo Executada
Se estivermos trabalhando com arquivos grandes e grandes quantidades de dados, verifique se não há várias sessões do Excel abertas – ele precisa ser aberto apenas uma vez. Uma maneira de verificar isso é acessar o Gerenciador de Tarefas e ver quantas instâncias do Excel estão em execução.
Pressione Ctl + Alt + Delete no teclado,
Clique em Gerenciador de tarefas e verifique se há apenas uma instância do Excel em execução. No gráfico abaixo, há uma instância com duas janelas.
Também podemos verificar no Gerenciador de Tarefas se não há nenhuma instância do Excel em execução em segundo plano (ou seja, não visível).
Role para baixo no Gerenciador de tarefas até ver Processos em segundo plano e verifique se o Excel não está nessa lista de programas.
Verifique o Tamanho do Arquivo do Excel
Muitas vezes, há linhas e colunas que foram acessadas abaixo das que são realmente usadas em suas planilhas. O Excel usa memória nessas células, mesmo que elas estejam vazias. Verifique o tamanho do arquivo pressionando CTRL + SHIFT + END no teclado para ver onde o ponteiro da célula está. Se ele parar bem abaixo da última célula que estiver usando, certifique-se de excluir todas as linhas e colunas vazias acima do ponteiro da célula e, em seguida, salve novamente o arquivo – isso reduzirá o tamanho do arquivo do Excel.
Outras Maneiras de Verificar a Memória
Há várias outras maneiras de liberar memória no Excel. Uma boa ideia é fechar o Excel se não estiver usando-o e abri-lo mais tarde – isso liberará qualquer memória que o Excel esteja armazenando, pois ele tende a armazenar memória mesmo quando uma pasta de trabalho não está aberta! Certifique-se sempre de que sua versão do Office esteja atualizada, verificando se há atualizações em seu PC, e verifique se há algum suplemento VBA que possa estar sendo usado, mas que você não esteja usando – você pode desinstalá-lo para liberar ainda mais memória.