Tämä opetusohjelma selittää VBA-virheen 1004-sovelluksen tai objektin määrittämän virheen.
VBA-ajonaikainen virhe 1004 tunnetaan sovelluksen tai objektin määrittämänä virheenä, joka ilmenee koodin ollessa käynnissä. Koodausvirheiden tekeminen (katso Virheidenkäsittelyopas) on osa VBA: n oppimista, mutta virheen syyn tunteminen auttaa välttämään virheiden tekemistä tulevassa koodauksessa.
VBA -virhe 1004 - Objektia ei ole olemassa
Jos tarkoitamme koodissamme olevaa objektia, kuten alueen nimeä, jota ei ole määritelty, tämä virhe voi tapahtua, koska VBA -koodi ei löydä nimeä.
12345678 | Sub CopyRange ()Himmennetty kopio kohteesta AlueHimmennä kopio alueeksiAseta CopyFrom = Sheets (1) .Range ("CopyFrom")Aseta CopyTo = Sheets (1) .Range ("CopyTo")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesEnd Sub |
Yllä oleva esimerkki kopioi arvot nimetystä alueesta "CopyFrom" nimettyyn alueeseen "CopyTo" - edellyttäen tietenkin, että nämä ovat olemassa olevia nimettyjä alueita! Jos niitä ei ole, näyttöön tulee virhe 1004.
Yksinkertaisin tapa välttää tämä virhe yllä olevassa esimerkissä on luoda alueiden nimet Excel -työkirjaan tai viitata alueeseen perinteisessä rivi- ja sarakemuodossa, esim. Alue (“A1: A10”).
VBA -virhe 1004 - Nimi on jo otettu
Virhe voi ilmetä myös, jos yrität nimetä objektin uudelleen olemassa olevaksi objektiksi - esimerkiksi jos yritämme nimetä Taulukko1 uudelleen, mutta taulukolle antamasi nimi on jo toisen taulukon nimi.
123 | AlanimiTyöarkki ()ActiveSheet.Name = "Sheet2"End Sub |
Jos meillä on jo Sheet2, virhe ilmenee.
VBA -virhe 1004 - viittaus objektiin väärin
Virhe voi ilmetä myös silloin, kun olet viitannut virheellisesti koodiin. Esimerkiksi:
12345678 | Sub CopyRange ()Himmennetty kopio kohteesta AlueHimmennä kopio alueeksiAseta CopyFrom = Alue ("A1: A10")Aseta CopyTo = alue ("C1: C10")Alue (CopyFrom)Alue (CopyTo) .PasteSpecial xlPasteValuesEnd Sub |
Tämä antaa meille jälleen virheen 10004
Korjaa koodi, niin virhe ei enää näy.
12345678 | Sub CopyRange ()Himmennetty kopio kohteesta AlueHimmennä kopio alueeksiAseta CopyFrom = Alue ("A1: A10")Aseta CopyTo = alue ("C1: C10")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesEnd Sub |
VBA -virhe 1004 - objektia ei löydy
Tämä virhe voi ilmetä myös silloin, kun yritämme avata työkirjan eikä työkirjaa löydy - työkirja on tässä tapauksessa objekti, jota ei löydy.
1234 | Alitiedosto ()Dim wb TyökirjanaAseta wb = Työkirjat.Open ("C: \ Data \ TestFile.xlsx")End Sub |
Vaikka viesti on erilainen virheruudussa, virhe on edelleen 1004.