W tym samouczku wyjaśniono błąd VBA 1004 - błąd zdefiniowany przez aplikację lub zdefiniowany przez obiekt.
Błąd czasu wykonywania VBA 1004 jest znany jako błąd zdefiniowany przez aplikację lub zdefiniowany przez obiekt, który występuje podczas działania kodu. Popełnianie błędów w kodowaniu (zobacz nasz Przewodnik obsługi błędów) jest nieodłączną częścią nauki VBA, ale wiedza o przyczynach wystąpienia błędu pomaga uniknąć błędów w przyszłym kodowaniu.
VBA Błąd 1004 - Obiekt nie istnieje
Jeśli odwołujemy się do obiektu w naszym kodzie, takiego jak nazwa zakresu, który nie został zdefiniowany, ten błąd może wystąpić, ponieważ kod VBA nie będzie mógł znaleźć nazwy.
12345678 | Podzakres kopii()Przyciemnij kopię z zakresuDim CopyTo As RangeUstaw CopyFrom = Sheets(1).Range("CopyFrom")Ustaw CopyTo = Sheets(1).Range("CopyTo")KopiujZ.KopiujCopyTo.PasteSpecial xlPasteValuesNapis końcowy |
Powyższy przykład skopiuje wartości z nazwanego zakresu „CopyFrom” do nazwanego zakresu „CopyTo” - oczywiście pod warunkiem, że są to istniejące nazwane zakresy! Jeśli nie istnieją, zostanie wyświetlony błąd 1004.
Najprostszym sposobem uniknięcia tego błędu w powyższym przykładzie jest utworzenie nazw zakresów w skoroszycie programu Excel lub odwołanie się do zakresu w tradycyjnym formacie wiersza i kolumny, np.: Zakres („A1:A10”).
Błąd VBA 1004 - nazwa już zajęta
Błąd może również wystąpić, jeśli próbujesz zmienić nazwę obiektu na obiekt, który już istnieje - na przykład, jeśli próbujemy zmienić nazwę Arkusz1, ale nazwa, którą nadajesz arkuszowi, jest już nazwą innego arkusza.
123 | Nazwa podrzędna Arkusz roboczy()ActiveSheet.Name = "Arkusz2"Napis końcowy |
Jeśli mamy już Arkusz2, to wystąpi błąd.
Błąd VBA 1004 - Nieprawidłowe odwoływanie się do obiektu
Błąd może również wystąpić, gdy niepoprawnie odwołujesz się do obiektu w swoim kodzie. Na przykład:
12345678 | Podzakres kopii()Przyciemnij kopię z zakresuDim CopyTo As RangeUstaw CopyFrom = Range("A1:A10")Ustaw CopyTo = Zakres("C1:C10")Zakres (KopiujOd).KopiujZakres (Kopiuj do). PasteSpecial xlPasteValuesNapis końcowy |
To po raz kolejny da nam błąd 10004
Popraw kod, a błąd nie będzie już wyświetlany.
12345678 | Podzakres kopii()Przyciemnij kopię z zakresuDim CopyTo As RangeUstaw CopyFrom = Range("A1:A10")Ustaw CopyTo = Zakres("C1:C10")KopiujZ.KopiujCopyTo.PasteSpecial xlPasteValuesNapis końcowy |
Błąd VBA 1004 - Nie znaleziono obiektu
Ten błąd może również wystąpić, gdy próbujemy otworzyć skoroszyt, a skoroszyt nie zostanie znaleziony - skoroszyt w tym przypadku jest obiektem, który nie został znaleziony.
1234 | Sub OpenFile()Dim wb jako skoroszytSet wb = Workbooks.Open("C:\Data\TestFile.xlsx")Napis końcowy |
Chociaż komunikat w polu błędu będzie inny, błąd nadal wynosi 1004.