Tento tutoriál vysvetlí chybu VBA 1004-chyba definovaná aplikáciou alebo objektom.
Chyba spustenia VBA 1004 je známa ako chyba definovaná aplikáciou alebo objektom, ku ktorej dochádza počas spustenia kódu. Chyby v kódovaní (pozrite si nášho sprievodcu riešením chýb) sú neoddeliteľnou súčasťou učenia sa jazyka VBA, ale vedieť, prečo dochádza k chybe, vám pomôže vyhnúť sa chybám v budúcom kódovaní.
Chyba VBA 1004 - objekt neexistuje
Ak hovoríme o objekte v našom kóde, ako je napríklad názov rozsahu, ktorý nebol definovaný, potom k tejto chybe môže dôjsť, pretože kód VBA nebude schopný nájsť názov.
12345678 | Rozsah čiastočnej kópie ()Dim CopyFrom As RangeDim CopyTo As RangeNastaviť CopyFrom = Listy (1). Rozsah ("CopyFrom")Nastaviť CopyTo = Listy (1). Rozsah ("CopyTo")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesKoniec pod |
Vyššie uvedený príklad skopíruje hodnoty z pomenovaného rozsahu „CopyFrom“ do pomenovaného rozsahu „CopyTo“ - samozrejme za predpokladu, že ide o existujúce pomenované rozsahy! Ak neexistujú, zobrazí sa chyba 1004.
Najjednoduchším spôsobom, ako sa tejto chybe vo vyššie uvedenom príklade vyhnúť, je vytvoriť názvy rozsahov v zošite programu Excel alebo použiť rozsah v tradičnom formáte riadkov a stĺpcov, napríklad: Rozsah („A1: A10“).
Chyba VBA 1004 - názov už bol prijatý
Chyba sa môže vyskytnúť aj vtedy, ak sa pokúšate premenovať objekt na už existujúci objekt - napríklad ak sa pokúšame premenovať Sheet1, ale názov, ktorý listu dávate, je už názvom iného listu.
123 | Podnadpis Pracovný list ()ActiveSheet.Name = "List2"Koniec pod |
Ak už máme list2, potom sa vyskytne chyba.
Chyba VBA 1004 - nesprávne odkazovanie na objekt
Chyba sa môže vyskytnúť aj vtedy, ak ste vo svojom kóde nesprávne odkazovali na objekt. Napríklad:
12345678 | Rozsah čiastočnej kópie ()Dim CopyFrom As RangeDim CopyTo As RangeNastaviť CopyFrom = rozsah ("A1: A10")Nastaviť CopyTo = rozsah ("C1: C10")Rozsah (CopyFrom). KopírovaťRozsah (CopyTo) .PasteSpecial xlPasteValuesKoniec pod |
To nám opäť poskytne chybu 10004
Opravte kód a chyba sa už nebude zobrazovať.
12345678 | Rozsah čiastočnej kópie ()Dim CopyFrom As RangeDim CopyTo As RangeNastaviť CopyFrom = rozsah ("A1: A10")Nastaviť CopyTo = rozsah ("C1: C10")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesKoniec pod |
Chyba VBA 1004 - objekt nebol nájdený
K tejto chybe môže dôjsť aj vtedy, keď sa pokúšame otvoriť zošit a zošit nie je nájdený - zošit je v tomto prípade objekt, ktorý sa nenašiel.
1234 | Sub OpenFile ()Dim wb ako zošitNastaviť wb = zošity. Otvorené ("C: \ Data \ TestFile.xlsx")Koniec pod |
Aj keď sa správa v chybovom poli bude líšiť, chyba je stále 1004.