Ta vadnica bo razložila napako VBA 1004-napaka, ki jo določa aplikacija ali predmet.
Napaka časa izvajanja VBA 1004 je znana kot napaka, ki jo definira aplikacija ali objekt, ki se pojavi med izvajanjem kode. Napake pri kodiranju (glejte naš priročnik za ravnanje z napakami) so sestavni del učenja VBA, vendar veste, zakaj pride do napake, se izognete napakam pri prihodnjem kodiranju.
Napaka VBA 1004 - Objekt ne obstaja
Če govorimo o objektu v naši kodi, kot je ime obsega, ki ni bilo definirano, lahko pride do te napake, saj koda VBA ne bo mogla najti imena.
12345678 | Sub CopyRange ()Zatemni kopijo Iz območjaZatemni CopyTo As RangeNastavi CopyFrom = Sheets (1). Range ("CopyFrom")Nastavi CopyTo = Sheets (1). Range ("CopyTo")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesEnd Sub |
Zgornji primer bo kopiral vrednosti iz imenovanega obsega “CopyFrom” v imenovani obseg “CopyTo” - seveda pod pogojem, da gre za obstoječa imenovana območja! Če ne obstajajo, se prikaže napaka 1004.
Najpreprostejši način, da se v zgornjem primeru izognete tej napaki, je, da ustvarite imena obsegov v Excelovem delovnem zvezku ali se sklicujete na obseg v tradicionalni obliki vrstice in stolpca, na primer: Obseg ("A1: A10").
Napaka VBA 1004 - ime že zasedeno
Napaka se lahko pojavi tudi, če poskušate preimenovati predmet v objekt, ki že obstaja - na primer, če poskušamo preimenovati Sheet1, vendar je ime, ki ga dajete listu, že ime drugega lista.
123 | Podime Delovni list ()ActiveSheet.Name = "List2"End Sub |
Če že imamo List2, bo prišlo do napake.
Napaka VBA 1004 - Nepravilno sklicevanje na objekt
Napaka se lahko pojavi tudi, če ste se v kodi napačno sklicevali na predmet. Na primer:
12345678 | Sub CopyRange ()Zatemni kopijo Iz območjaZatemni CopyTo As RangeNastavi CopyFrom = Range ("A1: A10")Nastavi CopyTo = Razpon ("C1: C10")Obseg (CopyFrom). KopirajObseg (CopyTo) .PasteSpecial xlPasteValuesEnd Sub |
S tem bomo znova dobili napako 10004
Popravite kodo in napaka ne bo več prikazana.
12345678 | Sub CopyRange ()Zatemni kopijo Iz območjaZatemni CopyTo As RangeNastavi CopyFrom = Range ("A1: A10")Nastavi CopyTo = Razpon ("C1: C10")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesEnd Sub |
Napaka VBA 1004 - Objekt ni bil najden
Do te napake lahko pride tudi, ko poskušamo odpreti delovni zvezek in delovnega zvezka ne najdemo - delovni zvezek je v tem primeru predmet, ki ga ni mogoče najti.
1234 | Sub OpenFile ()Dim wb Kot delovni zvezekSet wb = Workbooks.Open ("C: \ Data \ TestFile.xlsx")End Sub |
Čeprav bo sporočilo v polju za napako drugačno, je napaka še vedno 1004.