Šioje pamokoje bus paaiškinta VBA klaida 1004-programos ar objekto apibrėžta klaida.
VBA vykdymo laiko klaida 1004 yra žinoma kaip programos arba objekto apibrėžta klaida, kuri atsiranda, kai kodas veikia. Kodavimo klaidų darymas (žr. Mūsų klaidų tvarkymo vadovą) yra neatsiejama mokymosi VBA dalis, tačiau žinant, kodėl įvyksta klaida, ateityje išvengsite klaidų.
VBA klaida 1004 - objektas neegzistuoja
Jei mes kalbame apie objektą mūsų kode, pvz., Neapibrėžtą diapazono pavadinimą, ši klaida gali atsirasti, nes VBA kodas negalės rasti pavadinimo.
12345678 | Sub CopyRange ()„Dim CopyFrom“ kaip diapazonas„Dim Copy“ kaip diapazonasNustatykite „CopyFrom = Sheets“ (1). Range („CopyFrom“)Nustatykite „CopyTo = Sheets“ (1). Range („CopyTo“)CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesPabaiga Sub |
Aukščiau pateiktas pavyzdys nukopijuos reikšmes iš pavadinto diapazono „CopyFrom“ į pavadintą diapazoną „CopyTo“ - žinoma, su sąlyga, kad tai esami pavadinti diapazonai! Jei jų nėra, bus rodoma klaida 1004.
Paprasčiausias būdas išvengti šios klaidos aukščiau pateiktame pavyzdyje yra sukurti diapazonų pavadinimus „Excel“ darbaknygėje arba nurodyti diapazoną tradiciniu eilučių ir stulpelių formatu, pvz .: Diapazonas („A1: A10“).
VBA klaida 1004 - vardas jau užimtas
Klaida taip pat gali atsirasti, jei bandote pervadinti objektą į jau esamą objektą - pavyzdžiui, jei bandome pervardyti „Sheet1“, bet jūsų suteiktas lapas jau yra kito lapo pavadinimas.
123 | Pavadinimas Darbo lapas ()ActiveSheet.Name = "Sheet2"Pabaiga Sub |
Jei jau turime „Sheet2“, klaida įvyks.
VBA klaida 1004 - neteisinga nuoroda į objektą
Klaida taip pat gali atsirasti, kai neteisingai nurodėte objektą savo kode. Pavyzdžiui:
12345678 | Sub CopyRange ()„Dim CopyFrom“ kaip diapazonas„Dim Copy“ kaip diapazonasNustatyti „CopyFrom = Range“ („A1: A10“)Nustatyti „CopyTo = Range“ („C1: C10“)Diapazonas (CopyFrom). KopijuotiDiapazonas (CopyTo) .PasteSpecial xlPasteValuesPabaiga Sub |
Tai dar kartą suteiks mums klaidą 10004
Ištaisykite kodą ir klaida nebebus rodoma.
12345678 | Sub CopyRange ()„Dim CopyFrom“ kaip diapazonas„Dim Copy“ kaip diapazonasNustatyti „CopyFrom = Range“ („A1: A10“)Nustatyti „CopyTo = Range“ („C1: C10“)CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesPabaiga Sub |
VBA klaida 1004 - objektas nerastas
Ši klaida taip pat gali atsirasti, kai bandome atidaryti darbaknygę, o darbo knyga nerasta - šiuo atveju darbaknygė yra nerastas objektas.
1234 | Antrasis OpenFile ()Dim wb Kaip darbo knygaNustatykite wb = Workbooks.Open ("C: \ Data \ TestFile.xlsx")Pabaiga Sub |
Nors pranešimas klaidos laukelyje bus kitoks, klaida vis tiek yra 1004.