Reikalingas VBA objektas | Kaip ištaisyti reikalingą objekto klaidą „Excel VBA“?

Reikalingas objektas „Excel VBA“

Klaidos yra neatsiejama kodavimo kalbos dalis, tačiau tikrasis genijus yra klaidos radimas ir klaidų taisymas. Pirmasis žingsnis taisant tas klaidas yra intelektas norint sužinoti, kodėl tos klaidos atsiranda. Jei galite sužinoti, kodėl atsiranda šios klaidos, tai labai lengva ištaisyti tas klaidas neprarandant prakaito. Viena tokių VBA kodavimo klaidų yra „Object Required“.

Jei atsimenate mokydamiesi kintamųjų ir priskirdami duomenų tipus šiems kintamiesiems, turime ir „Object“ duomenų tipus. Kai priskirtas objekto duomenų tipas ir jei to objekto nėra darbalapyje ar darbaknygėje, apie kurį mes kalbame, gausime VBA klaidos pranešimą kaip „Object Required“ . Taigi, kaip naujas programuotojas, tokiose situacijose yra įprasta panikuoti, nes pradiniame lygmenyje pradedantysis negali rasti šios klaidos priežasties.

Kodėl įvyksta reikalingo objekto klaida? (ir ... Kaip tai ištaisyti?)

Gerai, norint suprasti, kodėl įvyksta ši klaida ir kaip ją pašalinti, reikia dviejų ar trijų pavyzdžių.

Šį „VBA Object Required Excel“ šabloną galite atsisiųsti čia - „VBA Object Required Excel“ šabloną

Pavyzdžiui, pažvelkite į žemiau pateiktą kodą.

Kodas:

 Paskutinė_ eilutė () Tamsinti Wb kaip darbaknygę Dydis Ws kaip darbalapis Dim MyToday as Date Set Wb = ThisWorkbook Set Ws = ThisWorkbook.Worksheets ("Data") Set MyToday = Wb.Ws.Cells (1, 1) MsgBox MyToday End Sub 

Leiskite man paaiškinti jums pirmiau pateiktą kodą.

Aš paskelbiau tris kintamuosius, o pirmieji du kintamieji nurodo objektus „Darbaknygė“ ir „Darbalapis“. Trečiasis kintamasis nurodo duomenų tipą „Data“.

Kai kintamajam priskiriami „Object“ duomenų tipai, mes turime naudoti žodį „Set“, kad priskirtume objekto nuorodą kintamajam, todėl kitose dviejose eilutėse naudodamas raktinį žodį „Set“ priskyriau „ThisWorkbook“ nuoroda į kintamąjį „Wb“, nes šis kintamasis laiko objekto duomenų tipą kaip „Workbook“, o kintamajam „Ws“ šioje darbaknygėje priskyriau darbalapio „Data“ darbalapio objektą.

 Nustatyti Wb = ThisWorkbook
 Nustatyti Ws = ThisWorkbook.Worksheets („Duomenys“)
  • Kitoje „Data“ duomenų tipo kintamojo eilutėje taip pat naudojau raktinį žodį „Nustatyti“, kad priskirtumėte langelio A1 vertės reikšmę šioje darbaknygėje (Wb) ir darbalapyje „Data“ (Ws).
 Nustatyti „MyToday“ = Wb.Ws.Cells (1, 1)
  • Kitoje eilutėje VBA pranešimų laukelyje rodome langelio A1 vertės „MyDate“ kintamosios vertės reikšmę.
„MsgBox MyToday“
  • Gerai, paleiskime šį kodą ir pažiūrėkime, ką gauname.

Kaip matote aukščiau, VBA klaidos pranešimas rodomas kaip „Reikalingas objektas“ . Gerai, laikas išnagrinėti, kodėl gauname šį klaidos pranešimą.

  • Pirmiau pateiktame klaidos pranešimo vaizde, esančiame kodo skyriuje, rodydamas klaidos pranešimą, jis pažymėjo klaidos kodo dalį mėlyna spalva.

  • Taigi lieka klausimas, kodėl mes turime šią klaidą. Pirmas dalykas, kurį turime pamatyti, yra būtent šis kintamųjų duomenų tipas. Grįžkite į ankstesnę kodo eilutę, kur duomenų tipą priskyrėme kintamajam „MyDate“.

  • Mes priskyrėme kintamąjį duomenų tipą kaip „Data“ ir dabar grįžkime prie klaidos eilutės.

Šioje eilutėje mes naudojome raktinį žodį „Nustatyti“, o mūsų duomenų tipas nėra „Object“ duomenų tipas. Taigi tuo momentu, kai VBA kodas pamato raktinį žodį „Nustatyti“, jis daro prielaidą, kad tai yra objekto duomenų tipas, ir sako, kad tam reikia objekto nuorodos.

Taigi, apatinė eilutė yra „Nustatyti“ raktinis žodis naudojamas tik nurodyti objektų kintamuosius, pvz., Darbalapį, darbaknygę ir kt.

1 pavyzdys

Dabar pažvelkite į žemiau esantį kodą.

Kodas:

 Sub Object_Required_Error () Range ("A101"). Reikšmė = Application1.WorksheetFunction.Sum (Range ("A1: A100")) Pabaiga Sub 

Pirmiau pateiktame kode mes naudojome darbalapio funkciją „SUM“, kad gautume bendrą langelio reikšmę nuo A1 iki A100. Kai paleisite šį kodą, susidursime su klaida.

Oi! Joje parašyta „Vykdymo laiko klaida„ 424 “: reikalingas objektas.

Dabar atidžiai pažvelkime į kodą.

Užuot naudoję „Application“, mes klaidingai naudojome „Application1“, todėl VBA kode įvyko klaida „Object Required“.

Jei įjungtas žodis „Aiškus variantas“, gausime klaidą „Kintamasis nenustatytas“.

Ką reikia atsiminti

  • Object Required reiškia, kad objekto duomenų tipo nuoroda turi būti tiksli.
  • Kai koduojant parinktis „explicit word“ nėra įgalinta, gausime klaidą „Object Required“ už neteisingai parašytus kintamuosius žodžius, o jei parinktis „Explicit“ įjungta, gausime neteisingai parašytų kintamųjų žodžių kintamojo klaidą.

$config[zx-auto] not found$config[zx-overlay] not found