Nepieciešams VBA objekts Kā novērst nepieciešamo objekta kļūdu programmā Excel VBA?

Obligāts objekts ir nepieciešams programmā Excel VBA

Kļūdas ir neatņemama kodēšanas valodas daļa, taču patiesais ģēnijs slēpjas kļūdas atrašanā un šo kļūdu novēršanā. Pirmais solis šo kļūdu novēršanā ir saprāts, lai atrastu, kāpēc šīs kļūdas rodas. Ja jūs varat uzzināt, kāpēc šīs kļūdas nāk, tad ir ļoti viegli novērst šīs kļūdas, neizlaužot sviedru. Viena no šādām kļūdām VBA kodēšanā ir “Object Object”.

Ja atceraties, mācoties mainīgos un piešķirot šiem mainīgajiem datu tipus, mums ir arī “Object” datu tipi. Kad objekta datu tips ir piešķirts un ja šis objekts nav darblapā vai darbgrāmatā, uz kuru mēs atsaucamies, mēs saņemtu VBA kļūdas ziņojumu kā “Obligāts objekts” . Tātad kā jaunam kodētājam šajās situācijās ir ierasts apgalvot paniku, jo sākuma līmenī iesācējs nevar atrast šīs kļūdas cēloni.

Kāpēc rodas nepieciešamā objekta kļūda? (un ... kā to novērst?)

Labi, ir vajadzīgi divi vai trīs piemēri, lai patiešām saprastu, kāpēc rodas šī kļūda un kā to novērst.

Jūs varat lejupielādēt šo VBA Object Required Excel Template šeit - VBA Object Required Excel Template

Piemēram, skatiet zemāk esošo kodu.

Kods:

 Apakšējā_rinda () Dim Wb kā darbgrāmata Dim Ws kā darblapa Dim MyToday kā datumu kopa Wb = ThisWorkbook Set Ws = ThisWorkbook.Worksheets ("Data") Set MyToday = Wb.Ws.Cells (1, 1) MsgBox MyToday End Sub 

Ļaujiet man jums paskaidrot iepriekš minēto kodu.

Esmu deklarējis trīs mainīgos, un pirmie divi mainīgie attiecas uz objektiem “Darbgrāmata” un “Darblapa”. Trešais mainīgais attiecas uz datu veidu “Datums”.

Kad mainīgajam tiek piešķirti datu tipi “Object”, mums ir jāizmanto vārds “Set”, lai mainīgajam piešķirtu objekta atsauci, tāpēc nākamajās divās rindiņās, izmantojot “Set” atslēgvārdu, esmu piešķīris “ThisWorkbook” atsauce uz mainīgo “Wb”, jo šajā mainīgajā objekta datu tips ir “Workbook”, un mainīgajam “Ws” šajā darbgrāmatā esmu piešķīris darblapas “Data” darblapas objektu.

 Iestatīt Wb = ThisWorkbook
 Iestatīt Ws = ThisWorkbook.Worksheets ("Dati")
  • Arī nākamajā datuma mainīgā datuma rindā esmu izmantojis atslēgvārdu “Set”, lai piešķirtu šūnas A1 vērtības vērtību šajā darbgrāmatā (Wb) un darblapā “Data” (Ws).
 Iestatīt MyToday = Wb.Ws.Cells (1, 1)
  • Nākamajā rindā VBA ziņojumu lodziņā parādām šūnas A1 vērtības mainīgās vērtības “MyDate” vērtību.
MsgBox MyToday
  • Labi, palaidīsim šo kodu un redzēsim, kā mēs to iegūstam.

Kā redzat iepriekš, VBA kļūdas ziņojums tiek parādīts kā “Obligāts objekts” . Labi, ir pienācis laiks pārbaudīt, kāpēc mēs saņemam šo kļūdas ziņojumu.

  • Iepriekš redzamajā kļūdas ziņojuma attēlā koda sadaļā, parādot kļūdas ziņojumu, tā ir iezīmējusi koda kļūdas daļu ar zilu krāsu.

  • Tātad paliek jautājums, kāpēc mēs saņēmām šo kļūdu. Pirmais, kas mums jāredz, ir šis konkrētais mainīgo datu tips. Atgriezieties iepriekšējā koda rindā, kur datu tipam esam piešķīruši mainīgo “MyDate”.

  • Mēs esam piešķīruši mainīgā datu tipam “Datums” un tagad atgriezīsimies pie kļūdu rindas.

Šajā rindā mēs izmantojām atslēgvārdu “Iestatīt”, bet mūsu datu tips nav “Objekta” datu tips. Tāpēc brīdī, kad VBA kods ierauga atslēgvārdu “Iestatīt”, tas pieņem, ka tas ir objekta datu tips, un saka, ka tam nepieciešama objekta atsauce.

Tātad apakšējā rinda ir “Set” atslēgvārds, kas tiek izmantots tikai atsaucei uz objekta mainīgajiem, piemēram, darblapa, darbgrāmata utt.

1. piemērs

Tagad ieskatieties zemāk redzamajā kodā.

Kods:

 Sub Object_Required_Error () diapazons ("A101"). Vērtība = Application1.WorksheetFunction.Sum (diapazons ("A1: A100")) Beigas Sub 

Iepriekš minētajā kodā mēs izmantojām darblapas funkciju “SUM”, lai iegūtu šūnu vērtības no A1 līdz A100. Kad palaidīsit šo kodu, tiks parādīta zemāk redzamā kļūda.

Hmm ... Tajā teikts: “Izpildes laika kļūda“ 424 ”: Obligāts objekts.

Tagad uzmanīgi apskatīsim kodu tūlīt.

Tā vietā, lai lietotu “Application”, mēs kļūdaini esam izmantojuši “Application1”, tāpēc VBA kodā tā radās kļūda “Object Object”.

Ja vārds “Option Explicit” ir iespējots, tiks parādīta kļūda “Mainīgais nav noteikts”.

Atceramās lietas

  • Object Object nozīmē objekta datu tipa atsaucei jābūt precīzai.
  • Kad opcijā nepārprotams vārds kodēšanā nav iespējots, mēs saņemsim kļūdu Object Required nepareizi uzrakstītiem mainīgajiem vārdiem, un, ja opcija Explicit ir iespējota, mēs saņemsim kļūdas mainīgais nav definēts kļūdaini uzrakstītajiem mainīgajiem vārdiem.

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