VBA-Fehler 1004 - Anwendungsdefinierter oder objektdefinierter Fehler

In diesem Tutorial wird der VBA-Fehler 1004-anwendungsdefinierter oder objektdefinierter Fehler erläutert.

Der VBA-Laufzeitfehler 1004 ist als anwendungsdefinierter oder objektdefinierter Fehler bekannt, der auftritt, während der Code ausgeführt wird. Das Erstellen von Codierungsfehlern (siehe unseren Leitfaden zur Fehlerbehandlung) ist ein wesentlicher Bestandteil des Erlernens von VBA, aber zu wissen, warum ein Fehler auftritt, hilft Ihnen, Fehler bei der zukünftigen Codierung zu vermeiden.

VBA-Fehler 1004 - Objekt existiert nicht

Wenn wir in unserem Code auf ein Objekt verweisen, z. B. auf einen nicht definierten Bereichsnamen, kann dieser Fehler auftreten, da der VBA-Code den Namen nicht finden kann.

12345678 Unter CopyRange()Dim CopyFrom As RangeCopyTo als Bereich dimmenSet CopyFrom = Sheets(1).Range("CopyFrom")Set CopyTo = Sheets(1).Range("CopyTo")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesEnd Sub

Das obige Beispiel kopiert die Werte aus dem benannten Bereich „CopyFrom“ in den benannten Bereich „CopyTo“ - natürlich unter der Bedingung, dass es sich um existierende benannte Bereiche handelt! Wenn sie nicht vorhanden sind, wird der Fehler 1004 angezeigt.

Die einfachste Möglichkeit, diesen Fehler im obigen Beispiel zu vermeiden, besteht darin, die Bereichsnamen in der Excel-Arbeitsmappe zu erstellen oder auf den Bereich im traditionellen Zeilen- und Spaltenformat zu verweisen, z. Bereich("A1:A10").

VBA-Fehler 1004 - Name bereits vergeben

Der Fehler kann auch auftreten, wenn Sie versuchen, ein Objekt in ein bereits vorhandenes Objekt umzubenennen - zum Beispiel wenn wir versuchen, Sheet1 umzubenennen, aber der Name, den Sie dem Sheet geben, bereits der Name eines anderen Sheets ist.

123 UnternameWorksheet()ActiveSheet.Name = "Sheet2"End Sub

Wenn wir bereits ein Sheet2 haben, tritt der Fehler auf.

VBA-Fehler 1004 - falscher Verweis auf ein Objekt

Der Fehler kann auch auftreten, wenn Sie in Ihrem Code falsch auf ein Objekt verwiesen haben. Zum Beispiel:

12345678 Unter CopyRange()Dim CopyFrom As RangeCopyTo als Bereich dimmenSet CopyFrom = Range("A1:A10")Set CopyTo = Range("C1:C10")Bereich(CopyFrom).CopyRange(CopyTo).PasteSpecial xlPasteValuesEnd Sub

Dies wird uns erneut den Fehler 10004 geben

Korrigieren Sie den Code und der Fehler wird nicht mehr angezeigt.

12345678 Unter CopyRange()Dim CopyFrom As RangeCopyTo als Bereich dimmenSet CopyFrom = Range("A1:A10")Set CopyTo = Range("C1:C10")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesEnd Sub

VBA-Fehler 1004 - Objekt nicht gefunden

Dieser Fehler kann auch auftreten, wenn wir versuchen, eine Arbeitsmappe zu öffnen und die Arbeitsmappe nicht gefunden wird – die Arbeitsmappe in diesem Fall ist das nicht gefundene Objekt.

1234 Unter OpenFile()Dim wb als ArbeitsmappeSet wb = Workbooks.Open("C:\Data\TestFile.xlsx")End Sub

Obwohl die Meldung im Fehlerfeld anders aussieht, lautet der Fehler immer noch 1004.

wave wave wave wave wave