Chyba VBA 1004-chyba definovaná aplikací nebo objektem

Tento tutoriál vysvětlí chybu VBA 1004-Chyba definovaná aplikací nebo Objektem.

Chyba běhu VBA 1004 je známá jako chyba definovaná aplikací nebo objektem, ke které dochází během běhu kódu. Vytváření chyb v kódování (viz náš průvodce zpracováním chyb) je nedílnou součástí výuky VBA, ale vědět, proč k chybě dochází, vám pomůže vyhnout se chybám v budoucím kódování.

Chyba VBA 1004 - objekt neexistuje

Pokud mluvíme o objektu v našem kódu, jako je název oblasti, který nebyl definován, pak k této chybě může dojít, protože kód VBA nebude schopen najít název.

12345678 Dílčí rozsah kopírování ()Dim CopyFrom As As rangeDim CopyTo As RangeNastavit CopyFrom = Listy (1) .Range ("CopyFrom")Nastavit CopyTo = Listy (1) .Range ("CopyTo")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesEnd Sub

Výše uvedený příklad zkopíruje hodnoty z pojmenovaného rozsahu „CopyFrom“ do pojmenovaného rozsahu „CopyTo“ - samozřejmě za podmínky, že se jedná o existující pojmenované rozsahy! Pokud neexistují, zobrazí se chyba 1004.

Nejjednodušším způsobem, jak se této chybě ve výše uvedeném příkladu vyhnout, je vytvořit názvy rozsahů v sešitu aplikace Excel nebo odkazovat na rozsah v tradičním formátu řádků a sloupců, například: Rozsah („A1: A10“).

Chyba VBA 1004 - název již převzat

K chybě může také dojít, pokud se pokoušíte přejmenovat objekt na objekt, který již existuje - například pokud se pokoušíme přejmenovat Sheet1, ale název, který listu dáváte, je již názvem jiného listu.

123 Vedlejší název Pracovní list ()ActiveSheet.Name = "List2"End Sub

Pokud již máme list2, pak dojde k chybě.

Chyba VBA 1004 - nesprávné odkazování na objekt

K chybě může dojít také v případě, že jste v kódu nesprávně odkazovali na objekt. Například:

12345678 Dílčí rozsah kopírování ()Dim CopyFrom As As rangeDim CopyTo As RangeNastavit CopyFrom = rozsah ("A1: A10")Nastavit CopyTo = rozsah ("C1: C10")Rozsah (CopyFrom). KopírovatRozsah (CopyTo) .PasteSpecial xlPasteValuesEnd Sub

To nám opět poskytne chybu 10004

Opravte kód a chyba se již nebude zobrazovat.

12345678 Dílčí rozsah kopírování ()Dim CopyFrom As As rangeDim CopyTo As RangeNastavit CopyFrom = rozsah ("A1: A10")Nastavit CopyTo = rozsah ("C1: C10")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesEnd Sub

Chyba VBA 1004 - objekt nebyl nalezen

K této chybě může také dojít, když se pokoušíme otevřít sešit a sešit nebyl nalezen - sešit je v tomto případě objekt, který nebyl nalezen.

1234 Sub OpenFile ()Dim wb jako sešitNastavit wb = Workbooks.Open ("C: \ Data \ TestFile.xlsx")End Sub

Ačkoli se zpráva v chybovém poli bude lišit, chyba je stále 1004.

wave wave wave wave wave