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.