VBA Erro 1004 – Erro Definido pelo Aplicativo ou pelo Objeto
In this Article
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.
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 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
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.