VBA Error 1004 – Error Definido por la Aplicación o Error definido por el Objeto
In this Article
Este tutorial explicará el error 1004 de VBA – Error definido por la aplicación o por el objeto.
El error 1004 de VBA en tiempo de ejecución se conoce como un error definido por la aplicación o por el objeto que se produce mientras se ejecuta el código. Cometer errores de codificación (Vea nuestra Guía de Manejo de Errores) es un aspecto inevitable al aprender VBA, pero saber por qué ocurre un error le ayuda a evitar cometer errores en la codificación futura.
VBA Error 1004 – El Objeto No Existe
Si nos referimos a un objeto en nuestro código, como un Nombre de Rango que no ha sido definido, entonces este error puede ocurrir ya que el código VBA será incapaz de encontrar el nombre.
Sub CopiarRango()
Dim CopyFrom As Range
Dim CopyTo As Range
Set CopyFrom = Hojas(1).Rango("CopyFrom")
Set CopyTo = Sheets(1).Range("CopyTo")
CopyFrom.Copy
CopyTo.PasteSpecial xlPasteValues
End Sub
El ejemplo anterior copiará los valores del rango con nombre «CopyFrom» al rango con nombre «CopyTo» – con la condición, por supuesto, de que se trate de rangos con nombre existentes Si no existen, aparecerá el error 1004.
La forma más sencilla de evitar este error en el ejemplo anterior es crear los nombres de los rangos en el libro de Excel, o referirse al rango en el formato tradicional de fila y columna, por ejemplo Range(«A1:A10»).
VBA Error 1004 – Nombre Ya Tomado
El error también puede ocurrir si está intentando renombrar un objeto a un objeto que ya existe – por ejemplo si estamos intentando renombrar la Hoja1 pero el nombre que le estamos dando a la hoja ya es el nombre de otra hoja.
Sub NombreHojaTrabajo()
ActiveSheet.Name = "Hoja2"
End Sub
Si ya tenemos una Hoja2, entonces se producirá el error.
VBA Error 1004 – Referencia Incorrecta a un Objeto
El error también puede ocurrir cuando usted ha referenciado incorrectamente un objeto en su código. Por ejemplo:
Sub CopiarRango()
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
Esto nos dará de nuevo el Error 10004
Corrija el código y el error ya no se mostrará.
Sub CopiarRango()
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
VBA Error 1004 – Objeto No Encontrado
Este error también puede producirse cuando intentamos abrir un libro de trabajo y éste no se encuentra, siendo el libro de trabajo en este caso el objeto que no se encuentra.
Sub AbrirArchivo()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Data\TestFile.xlsx")
End Sub
El error sigue siendo 1004.