Este tutorial explicará el error 1004 de VBA: error definido por la aplicación o definido por el objeto.
El error de tiempo de ejecución de VBA 1004 se conoce como un error definido por la aplicación o definido por el objeto que se produce mientras se ejecuta el código. Cometer errores de codificación (consulte nuestra Guía de manejo de errores) es parte integral del aprendizaje de VBA, pero saber por qué ocurre un error lo ayuda a evitar cometer errores en la codificación futura.
Error de VBA 1004: el objeto no existe
Si nos referimos a un objeto en nuestro código, como un Nombre de rango que no se ha definido, este error puede ocurrir ya que el código VBA no podrá encontrar el nombre.
12345678 | Sub CopyRange ()Dim CopyFrom como rangoDim CopyTo como rangoEstablecer CopyFrom = Sheets (1) .Range ("CopyFrom")Establecer Copiar en = Hojas (1) .Rango ("Copiar en")Copiar de. CopiarCopyTo.PasteSpecial xlPasteValuesEnd 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 estos sean rangos con nombre existentes! Si no existen, se mostrará el error 1004.
La forma más sencilla de evitar este error en el ejemplo anterior es crear los nombres de rango en el libro de Excel o hacer referencia al rango en el formato tradicional de filas y columnas, por ejemplo: Rango ("A1: A10").
Error de VBA 1004: nombre ya tomado
El error también puede ocurrir si está intentando cambiar el nombre de un objeto a un objeto que ya existe; por ejemplo, si estamos intentando cambiar el nombre de Hoja1 pero el nombre que le está dando a la hoja ya es el nombre de otra hoja.
123 | Sub Nombre Hoja de trabajo ()ActiveSheet.Name = "Hoja2"End Sub |
Si ya tenemos una Hoja2, se producirá el error.
Error 1004 de VBA: referencia incorrecta a un objeto
El error también puede ocurrir cuando ha referenciado incorrectamente un objeto en su código. Por ejemplo:
12345678 | Sub CopyRange ()Dim CopyFrom como rangoDim CopyTo como rangoEstablecer CopyFrom = Rango ("A1: A10")Establecer Copiar a = Rango ("C1: C10")Rango (Copiar desde). CopiarRango (Copiar a) .PasteSpecial xlPasteValuesEnd Sub |
Esto una vez más nos dará el error 10004
Corrija el código y ya no se mostrará el error.
12345678 | Sub CopyRange ()Dim CopyFrom como rangoDim CopyTo como rangoEstablecer CopyFrom = Rango ("A1: A10")Establecer Copiar a = Rango ("C1: C10")Copiar de. CopiarCopyTo.PasteSpecial xlPasteValuesEnd Sub |
Error de VBA 1004 - Objeto no encontrado
Este error también puede ocurrir cuando intentamos abrir un libro de trabajo y no se encuentra el libro de trabajo; en este caso, el libro de trabajo es el objeto que no se encuentra.
1234 | Sub OpenFile ()Dim wb como libro de trabajoEstablecer wb = Workbooks.Open ("C: \ Data \ TestFile.xlsx")End Sub |
Aunque el mensaje será diferente en el cuadro de error, el error sigue siendo 1004.