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 neprakaituojant. 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 priskiriamas objekto duomenų tipas ir jei to objekto nėra darbalapyje arba darbaknygėje, į kurią mes kreipiamės, gautume VBA klaidos pranešimą kaip „Object Required“. Taigi, kaip naujas programuotojas, tokiose situacijose įprasta teigti paniką, 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ų.

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“, aš priskyriau „ThisWorkbook“ nuorodą kintamajam „Wb“, nes šis kintamasis laiko objekto duomenų tipą kaip „Darbaknygė“, 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ą.

  • Viršuje pateiktame klaidos pranešimo vaizde, esančiame kodo skiltyje, rodant 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 „Objekto“ 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ą, aptiksime toliau pateiktą klaidą.

Oi! Joje sakoma: „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 parinktyje aiškus žodis nėra įjungtas kodavimas, gausime klaidą Object Required už neteisingai parašytus kintamuosius žodžius, o jei parinktis Explicit įjungta, gausime klaidingai parašytų kintamųjų žodžių kintamąjį nenustatytą klaidą.

Įdomios straipsniai...