VBA klaida 1004-programos arba objekto apibrėžta klaida

Š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.

wave wave wave wave wave