VBA objekt on vajalik | Kuidas parandada objekti nõutavat viga Exceli VBA-s?

Exceli VBA-s nõutav objekt

Vead on kodeerimiskeele lahutamatu osa, kuid tõeline geenius seisneb vea leidmises ja nende vigade parandamises. Esimene samm nende vigade parandamisel on intelligentsus selle tuvastamiseks, miks need vead ilmnevad. Kui leiate, miks need vead tulevad, on nende vigade parandamine higi rikkumata väga lihtne. Üks selline viga VBA kodeerimisel on "Object Object".

Kui mäletate muutujate õppimise ja nendele muutujatele andmetüüpide määramise ajal, on meil ka „Object“ andmetüübid. Kui määratud objekti andmetüüp ja kui seda objekti pole viidatud töölehel või töövihikus, siis saame VBA tõrketeate "Object Object" . Niisiis on uue kodeerijana nendes olukordades paanika, sest algtasemel ei leia algaja selle vea põhjust.

Miks ilmneb nõutav objektiviga? (ja ... kuidas seda parandada?)

Ok, selle tõrke mõistmiseks ja selle parandamiseks on vaja kahte või kolme näidet.

Selle VBA objekti vajaliku Exceli malli saate alla laadida siit - VBA objekti nõutav Exceli mall

Näite saamiseks vaadake allolevat koodi.

Kood:

 Sub Last_Row () Hämarda Wb töövihikuna Dim Ws töölehena Dim MyToday as Date Set Wb = ThisWorkbook Set Ws = ThisWorkbook.Worksheets ("Data") Set MyToday = Wb.Ws.Cells (1, 1) MsgBox MyToday End Sub 

Las ma selgitan teile ülaltoodud koodi.

Olen deklareerinud kolm muutujat ja kaks esimest muutujat viitavad objektidele “Töövihik” ja “Tööleht”. Kolmas muutuja viitab andmetüübile „Kuupäev”.

Kui muutujale määratakse andmetüübid „Object”, peame muutujale objekti viite määramiseks kasutama sõna „Set”, nii et järgmises kahes reas määrasin märksõna „Set” abil viide „ThisWorkbookile” muutujale „Wb”, kuna see muutuja hoiab objekti andmetüüpi „töövihik” ja muutuja „Ws” jaoks olen selles töövihikus määranud töölehe „Data” tööleheobjekti.

 Määra Wb = See tööraamat
 Määra Ws = ThisWorkbook.Worksheets ("Andmed")
  • Andmetüübi muutuja „Date” järgmises reas olen ka selles töövihikus (Wb) ja töölehel „Data” (Ws) kasutanud märksõna „Set”, et määrata lahtri A1 väärtus.
 Määra MyToday = Wb.Ws.Cells (1, 1)
  • Järgmisel real kuvame VBA sõnumikastis lahtri A1 väärtuse muutuja “MyDate” väärtust.
MsgBox MinuTäna
  • Ok, käivitame selle koodi ja vaatame, mida selle tulemusel saame.

Nagu ülal näete, näitab see VBA tõrketeadet kui "Object Object" . Ok, on aeg uurida, miks me selle veateate saame.

  • Ülalolevas veateate pildis jaotises kood on veateate kuvamise ajal esile tõstetud koodi veaosa sinise värviga.

  • Seega jääb küsimus, miks me selle vea leidsime. Esimene asi, mida me peame nägema, on see konkreetne muutuja andmetüüp. Minge tagasi eelmisele koodireale, kus oleme määranud muutujale „MyDate” andmetüübi.

  • Oleme määranud muutuja andmetüübiks kuupäeva ja naaseme nüüd vea rea ​​juurde.

Selles reas oleme kasutanud märksõna „Määra”, samas kui meie andmetüüp ei ole andmetüüp „Objekt”. Nii et hetkel, kui VBA kood näeb märksõna „Määra”, eeldatakse, et see on objekti andmetüüp, ja ütleb, et see vajab objektiviidet.

Alumine rida on „Set” märksõna, mida kasutatakse ainult viitamiseks objekti muutujatele, nagu tööleht, töövihik jne.

Näide 1

Nüüd heitke pilk allpool olevale koodile.

Kood:

 Sub Object_Required_Error () Range ("A101"). Väärtus = Application1.WorksheetFunction.Sum (Range ("A1: A100")) End Sub 

Ülaltoodud koodis oleme lahtriväärtuste A1 kuni A100 saamiseks saanud töölehe funktsiooni “SUM”. Selle koodi käivitamisel ilmneb viga allpool.

Vabandust! Seal on kirjas „Run-time error” 424: Object Object.

Vaatame nüüd koodi hoolikalt.

Rakenduse kasutamise asemel oleme ekslikult kasutanud rakendust Application1, nii et VBA-koodis ilmnes tõrge "Object Required".

Kui sõna „Option Explicit” on lubatud, kuvatakse tõrge „Muutuja pole määratletud”.

Asjad, mida meeles pidada

  • Object Object tähendab, et objekti andmetüübi viide peab olema täpne.
  • Kui valikuline sõna pole kodeerimisel lubatud, siis saame valesti kirjutatud muutuja sõnade vea Object Required ja kui Option Explicit on lubatud, saame valesti kirjutatud muutuja sõnade puhul muutuja määratlemata vea.

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