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

Lang L: none (table-of-contents)

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 Required".

Kui mäletate, on muutujate õppimise ja neile muutujate andmetüüpide määramise ajal olemas ka objektitüübid. Kui objekti andmetüüp on määratud ja kui seda objekti pole töölehel või töövihikus, millele viitame, siis saame VBA tõrketeate "Object Object". Nii et uue kodeerijana on nendes olukordades tavaline 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.

Näiteks 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 on määratud andmetüübid „Object”, peame objekti viite määramiseks muutujale kasutama sõna „Set”, nii et järgmises kahes reas märksõna „Set” kasutades määranud muutujale „Wb” viite „ThisWorkbook”, kuna see muutuja hoiab objekti andmetüüpi „Töövihik” ja muutuja „Ws” jaoks olen määranud selles töövihikus 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) määranud lahtri A1 väärtuse määramiseks märksõna „Set”.
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 koodiosas 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 järgmine viga.

Vabandust! Seal on kirjas: "Käitusaja tõrge" 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 kodeeringus ei ole lubatud sõnaselge sõna, siis saame valesti kirjutatud muutuja sõnade vea Object Required ja kui Option Explicit on lubatud, siis saame valesti kirjutatud muutujate sõnade vea määratlemata.

Huvitavad Artiklid...