VBA Erro 1004 – Erro Definido pelo Aplicativo ou pelo Objeto

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on June 7, 2023

Este tutorial explicará o erro 1004 do VBA – Erro definido por aplicativo ou por objeto.

O erro 1004 em tempo de execução do VBA é conhecido como um erro definido pelo aplicativo ou definido pelo objeto, que ocorre enquanto o código está em execução. Cometer erros de codificação (consulte nosso Guia de tratamento de erros) é um aspecto inevitável do aprendizado do VBA, mas saber por que um erro ocorre ajuda a evitar erros em codificações futuras.

Erro 1004 do VBA – O Objeto Não Existe

Se estivermos nos referindo a um objeto em nosso código, como um nome de intervalo que não tenha sido definido, esse erro poderá ocorrer, pois o código VBA não conseguirá encontrar o nome.

Sub CopiarIntervalo()
  Dim CopyFrom As Range
  Dim CopyTo As Range
  Set CopyFrom = Sheets(1).Range("CopiarDe")
  Set CopyTo = Sheets(1).Range("CopiarPara")
  CopyFrom.Copy
CopyTo.PasteSpecial xlPasteValues
End Sub

O exemplo acima copiará os valores do intervalo nomeado “CopiarDe” para o intervalo nomeado “CopiarPara” – com a condição, é claro, de que esses sejam intervalos nomeados existentes! Se eles não existirem, será exibido o erro 1004.

exemplo erro objeto

A maneira mais simples de evitar esse erro no exemplo acima é criar os nomes dos intervalos na pasta de trabalho do Excel ou fazer referência ao intervalo no formato tradicional de linha e coluna, por exemplo: Range(“A1:A10”).

Erro 1004 do VBA – Nome já Utilizado

O erro também pode ocorrer se você estiver tentando renomear um objeto para um objeto que já existe – por exemplo, se estivermos tentando renomear a Planilha1, mas o nome que você está dando à planilha já é o nome de outra planilha.

Sub NomearPlanilha()
  ActiveSheet.Name = "Planilha2"
End Sub

Se já tivermos uma Planilha2, o erro ocorrerá.

erro planilha existente

Erro 1004 do VBA – Referência Incorreta a um Objeto

O erro também pode ocorrer quando um objeto é referenciado incorretamente em seu código. Por exemplo:

Sub CopiarIntervalo()
  Dim CopyFrom As Range
  Dim CopyTo As Range
  Set CopyFrom = Range("A1:A10")
  Set CopyTo = Range("C1:C10")
  Range(CopyFrom).Copy
  Range(CopyTo).PasteSpecial xlPasteValues
End Sub

Isso nos dará novamente o erro 1004

erro-objeto-range

Corrija o código, e o erro não será mais exibido.

Sub CopiarIntervalo()
  Dim CopyFrom As Range
  Dim CopyTo As Range
  Set CopyFrom = Range("A1:A10")
  Set CopyTo = Range("C1:C10")
  CopyFrom.Copy
  CopyTo.PasteSpecial xlPasteValues
End Sub

Erro 1004 do VBA – Objeto Não Encontrado

Esse erro também pode ocorrer quando estamos tentando abrir uma pasta de trabalho e a pasta de trabalho não é encontrada – a pasta de trabalho, nesse caso, é o objeto que não é encontrado.

Sub AbrirArquivo()
 Dim wb As Workbook
 Set wb = Workbooks.Open("C:\Data\TestFile.xlsx")
End Sub

Embora a mensagem seja diferente na caixa de erro, o erro continua sendo 1004.

erro arquivo nao encontrado

vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA