Zahtevan objekt VBA - Kako popraviti napako, ki jo zahteva objekt v Excelu VBA?

Predmet obvezen v Excelu VBA

Napake so sestavni del kodirnega jezika, vendar je pravi genij v iskanju napake in odpravljanju teh napak. Prvi korak pri odpravljanju teh napak je inteligenca pri ugotavljanju, zakaj se te napake pojavljajo. Če lahko ugotovite, zakaj te napake prihajajo, jih je zelo enostavno odpraviti, ne da bi se znojil. Ena takšnih napak pri kodiranju VBA je »Object Required«.

Če se spomnite, imamo med učenjem spremenljivk in dodeljevanju podatkovnih tipov tem spremenljivkam tudi vrste podatkov "Object". Ko je dodeljen podatkovni tip predmeta in če ta objekt ne obstaja na delovnem listu ali v delovnem zvezku, na katerega se sklicujemo, bi dobili sporočilo o napaki VBA kot »Object Required« Kot nov kodirnik je običajno v teh situacijah navesti paniko, ker na začetni ravni začetnik ne more najti vzroka za to napako.

Zakaj se pojavi napaka, potrebna za objekt? (in … Kako to popraviti?)

Ok, potrebujemo dva ali tri primere, da resnično razumemo, zakaj pride do te napake in kako jo odpraviti.

Na primer, poglejte spodnjo kodo.

Koda:

Sub Last_Row () Dim Wb As Workbook Dim Ws As Worksheet Dim MyToday As Date Set Wb = ThisWorkbook Set Ws = ThisWorkbook.Worksheets ("Data") Set MyToday = Wb.Ws.Cells (1, 1) MsgBox MyToday End Sub

Naj vam razložim zgornjo kodo.

Deklariral sem tri spremenljivke, prvi dve spremenljivki pa se nanašata na predmete »Delovni zvezek« in »Delovni list«. Tretja spremenljivka se nanaša na podatkovni tip "Datum".

Ko so spremenljivki dodeljeni podatkovni tipi »Object«, moramo s tipko »Set« dodeliti referenco predmeta spremenljivki, zato v naslednjih dveh vrsticah s ključno besedo »Set« I so referenci »ThisWorkbook« dodelili spremenljivko »Wb«, ker ima ta spremenljivka podatkovni tip predmeta kot »Delovni zvezek«, za spremenljivko »Ws« pa sem v tem delovnem zvezku dodelil objekt delovnega lista.

Set Wb = ThisWorkbook
Nastavite Ws = ThisWorkbook.Worksheets ("Data")
  • V naslednji vrstici za spremenljivko podatkovnega tipa »Datum« sem tudi uporabil ključno besedo »Nastavi« za določitev vrednosti vrednosti celice A1 v tem delovnem zvezku (Wb) in na delovnem listu »Podatki« (Ws).
Nastavi MyToday = Wb.Ws.Cells (1, 1)
  • V naslednji vrstici prikazujemo vrednost spremenljivke »MyDate« vrednosti celice A1 v polju za sporočila v VBA.
MsgBox MyToday
  • Ok, zaženimo to kodo in poglejmo, kaj bomo dobili kot rezultat.

Kot lahko vidite zgoraj, prikazuje sporočilo o napaki VBA kot "Object Required". Ok, čas je, da preučimo, zakaj smo prejeli to sporočilo o napaki.

  • Na zgornji sliki sporočila o napaki v odseku kode je med prikazom sporočila o napaki modro obarval del kode.
  • Torej, vprašanje ostaja, zakaj imamo to napako. Prva stvar, ki jo moramo videti, je ta vrsta spremenljivke podatkov. Vrnite se na prejšnjo vrstico kode, kjer smo spremenljivki »MyDate« dodelili vrsto podatkov.
  • Tip spremenljivke smo določili kot »Datum« in zdaj se vrnemo v vrstico z napakami.

V tej vrstici smo uporabili ključno besedo "Set", medtem ko naš podatkovni tip ni podatkovni tip "Object". V trenutku, ko koda VBA zagleda ključno besedo »Set«, domneva, da gre za podatkovni tip predmeta, in pravi, da zahteva sklic na objekt.

Spodnja vrstica je »Set«. Ključna beseda se uporablja samo za sklicevanje na spremenljivke predmeta, kot so Delovni list, Delovni zvezek itd.…

Primer # 1

Zdaj pa si oglejte spodnjo kodo.

Koda:

Podobject_Required_Error () Obseg ("A101"). Vrednost = Application1.WorksheetFunction.Sum (Obseg ("A1: A100")) Konec Sub

V zgornji kodi smo s funkcijo delovnega lista »SUM« dobili vsoto vrednosti celic od A1 do A100. Ko zaženete to kodo, bomo naleteli na spodnjo napako.

Ups !! Piše: "Napaka med izvajanjem '424': Object Required.

Zdaj pa natančno poglejmo kodo.

Namesto da bi uporabili »Application«, smo pomotoma uporabili »Application1«, zato je prišlo do napake »Object Required« v kodi VBA.

Če je omogočena beseda »Izrecna možnost«, bomo dobili napako »Variable Not Defined«.

Stvari, ki si jih je treba zapomniti

  • Object Required pomeni, da mora biti sklic na vrsto podatkov o objektu natančen.
  • Ko beseda z eksplicitno besedo v kodiranju ni omogočena, bomo dobili napako Object Required za napačno črkovane spremenljivke in če je omogočena možnost Izrecno, bomo za napačno črkovane spremenljivke dobili napako spremenljivke nedefinirana.

Zanimive Članki...