Šajā apmācībā tiks izskaidrota VBA kļūda 1004-lietojumprogrammas vai objekta noteikta kļūda.
VBA izpildes laika kļūda 1004 ir pazīstama kā lietojumprogrammas vai objekta noteikta kļūda, kas rodas koda darbības laikā. Kodēšanas kļūdu pieļaušana (skatiet mūsu kļūdu apstrādes rokasgrāmatu) ir neatņemama VBA apguves sastāvdaļa, taču, zinot, kāpēc rodas kļūda, varat izvairīties no kļūdām turpmākajā kodēšanā.
VBA kļūda 1004 - objekts nepastāv
Ja mēs atsaucamies uz objektu mūsu kodā, piemēram, diapazona nosaukumu, kas nav definēts, tad šī kļūda var rasties, jo VBA kods nevarēs atrast nosaukumu.
12345678 | Sub CopyRange ()Dim CopyFrom kā diapazonsDim CopyTo kā diapazonsIestatīt CopyFrom = Sheets (1). Range ("CopyFrom")Iestatīt CopyTo = Sheets (1). Range ("CopyTo")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesBeigu apakš |
Iepriekš minētais piemērs kopēs vērtības no nosauktā diapazona “CopyFrom” uz nosaukto diapazonu “CopyTo” - protams, ja tie ir esošie nosauktie diapazoni! Ja to nav, tiks parādīta kļūda 1004.
Vienkāršākais veids, kā izvairīties no šīs kļūdas iepriekš minētajā piemērā, ir izveidot diapazonu nosaukumus Excel darbgrāmatā vai atsaukties uz diapazonu tradicionālajā rindu un kolonnu formātā, piemēram: Diapazons (“A1: A10”).
VBA kļūda 1004 - nosaukums jau ir pieņemts
Kļūda var rasties arī tad, ja mēģināt pārdēvēt objektu par jau esošu objektu - piemēram, ja mēs mēģinām pārdēvēt lapu1, bet lapas nosaukums, kas jau ir, ir citas lapas nosaukums.
123 | Apakšnosaukuma darba lapa ()ActiveSheet.Name = "Lapa2"Beigu apakš |
Ja mums jau ir Sheet2, tad radīsies kļūda.
VBA kļūda 1004 - nepareiza atsauce uz objektu
Kļūda var rasties arī tad, ja kodā esat nepareizi norādījis kādu objektu. Piemēram:
12345678 | Sub CopyRange ()Dim CopyFrom kā diapazonsDim CopyTo kā diapazonsIestatīt CopyFrom = Diapazons ("A1: A10")Iestatīt CopyTo = Diapazons ("C1: C10")Diapazons (CopyFrom). KopētDiapazons (CopyTo) .PasteSpecial xlPasteValuesBeigu apakš |
Tas atkal dos mums kļūdu 10004
Izlabojiet kodu, un kļūda vairs netiks rādīta.
12345678 | Sub CopyRange ()Dim CopyFrom kā diapazonsDim CopyTo kā diapazonsIestatīt CopyFrom = Diapazons ("A1: A10")Iestatīt CopyTo = Diapazons ("C1: C10")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesBeigu apakš |
VBA kļūda 1004 - objekts nav atrasts
Šī kļūda var rasties arī tad, kad mēs mēģinām atvērt darbgrāmatu un darbgrāmata netiek atrasta - šajā gadījumā darbgrāmata ir neatrastais objekts.
1234 | Apakš OpenFile ()Dim wb kā darbgrāmataIestatiet wb = Workbooks.Open ("C: \ Data \ TestFile.xlsx")Beigu apakš |
Lai gan kļūdas lodziņā ziņojums būs atšķirīgs, kļūda joprojām ir 1004.