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 atrast, kāpēc šīs kļūdas nāk, tad ir ļoti viegli novērst šīs kļūdas, neizlaužot sviedru. Viena šāda kļūda 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 šī objekta nav darblapā vai darbgrāmatā, uz kuru atsaucamies, mēs saņemtu VBA kļūdas ziņojumu kā “Obligāts objekts”. Tātad, kā jaunam kodētājam, ir ierasts apgalvot, ka šajās situācijās rodas panika, 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.

Piemēram, apskatiet zemāk redzamo 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 jāizmanto vārds “Set”, lai mainīgajam piešķirtu objekta atsauci, tāpēc nākamajās divās rindās, izmantojot “Set” atslēgvārdu, es esat piešķīruši atsauci uz “ThisWorkbook” mainīgajam “Wb”, jo šajā mainīgajā objekta datu tips ir “Darbgrāmata”, 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š, tas parāda VBA kļūdas ziņojumu 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”, savukārt 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ā rindiņa 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 () Range ("A101"). Value = Application1.WorksheetFunction.Sum (Range ("A1: A100")) End 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 tālāk norādītā 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 kodēšanā opcija explicit word nav iespējota, kļūdaini uzrakstītiem mainīgajiem vārdiem tiks parādīta Object Required kļūda, un, ja opcija Explicit ir iespējota, kļūdaini uzrakstīto mainīgo vārdiem tiks parādīta kļūda, kas nav definēta.

Interesanti raksti...