VBA-object vereist

Object vereist in Excel VBA

Fouten zijn een essentieel onderdeel van de codeertaal, maar het echte genie ligt in het vinden van de fout en het oplossen van die fouten. De eerste stap bij het oplossen van die fouten is de intelligentie om te achterhalen waarom die fouten optreden. Als je kunt ontdekken waarom die fouten komen, dan is het een heel gemakkelijke taak om die fouten op te lossen zonder het zweet te breken. Een van die fouten in VBA-codering is "Object vereist".

Als u zich herinnert tijdens het leren van variabelen en het toewijzen van gegevenstypen aan die variabelen, hebben we ook "Object" -gegevenstypen. Als het objectgegevenstype is toegewezen en als dat object niet bestaat in het werkblad of de werkmap waarnaar we verwijzen, krijgen we het VBA-foutbericht als "Object vereist" . Dus, als nieuwe coder, is het gebruikelijk om in die situaties in paniek te raken, omdat beginners op het beginniveau de oorzaak van deze fout niet kunnen vinden.

Waarom treedt een object vereiste fout op? (en ... hoe dit te verhelpen?)

Ok, er zijn twee of drie voorbeelden nodig om echt te begrijpen waarom deze fout optreedt en hoe u deze kunt verhelpen.

U kunt deze VBA-object vereiste Excel-sjabloon hier downloaden - VBA-object vereiste Excel-sjabloon

Kijk voor een voorbeeld naar de onderstaande code.

Code:

 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 

Ik zal u de bovenstaande code voor u uitleggen.

Ik heb drie variabelen gedeclareerd en de eerste twee variabelen verwijzen naar de objecten "Werkboek" en "Werkblad". De derde variabele verwijst naar het gegevenstype "Datum".

Wanneer de gegevenstypen 'Object' aan de variabele zijn toegewezen, moeten we de woord 'Set'-toets gebruiken om de referentie van het object aan de variabele toe te wijzen, dus in de volgende twee regels met behulp van het' Set'-sleutelwoord heb ik de verwijzing van "ThisWorkbook" naar de variabele "Wb" omdat deze variabele het objectgegevenstype "Workbook" bevat en voor de variabele "Ws" heb ik het werkbladobject van het werkblad "Data" in deze werkmap toegewezen.

 Stel Wb = ThisWorkbook in
 Set Ws = ThisWorkbook.Worksheets ("Data")
  • In de volgende regel voor de gegevenstypevariabele "Datum" heb ik ook het sleutelwoord "Set" gebruikt om de waarde van de cel A1-waarde toe te wijzen in deze werkmap (Wb) en in het werkblad "Gegevens" (Ws).
 Set MyToday = Wb.Ws.Cells (1, 1)
  • Op de volgende regel laten we de waarde zien van de waarde van de variabele "MyDate" van de waarde van cel A1 in het berichtvenster in VBA.
MsgBox MyToday
  • Oké, laten we deze code uitvoeren en kijken wat we als resultaat krijgen.

Zoals u hierboven kunt zien, wordt het VBA-foutbericht weergegeven als "Object vereist" . Ok, het is tijd om te onderzoeken waarom we deze foutmelding krijgen.

  • In de bovenstaande afbeelding van het foutbericht in het codegedeelte, terwijl het foutbericht wordt weergegeven, is het foutgedeelte van de code met een blauwe kleur gemarkeerd.

  • De vraag blijft dus waarom we deze fout hebben gekregen. Het eerste dat we moeten zien, is dit specifieke variabele gegevenstype. Ga terug naar de vorige regel code waar we het datatype hebben toegewezen aan de variabele "MyDate".

  • We hebben het variabele datatype "Datum" toegewezen en komen nu terug op de foutregel.

In deze regel hebben we het trefwoord "Set" gebruikt, terwijl ons gegevenstype niet het gegevenstype "Object" is. Dus op het moment dat VBA-code het sleutelwoord "Set" ziet, gaat het ervan uit dat het een objectgegevenstype is en zegt het dat het een objectreferentie vereist.

Dus de onderste regel is dat het sleutelwoord 'Set' alleen wordt gebruikt om te verwijzen naar de objectvariabelen zoals werkblad, werkboek, enz. ...

Voorbeeld 1

Bekijk nu de onderstaande code.

Code:

 Sub Object_Required_Error () Bereik ("A101"). Waarde = Application1.WorksheetFunction.Sum (Bereik ("A1: A100")) End Sub 

In de bovenstaande code hebben we de werkbladfunctie "SOM" gebruikt om het totaal van de celwaarden van A1 tot A100 te krijgen. Wanneer u deze code uitvoert, zullen we onderstaande fout tegenkomen.

Oeps !! Er staat "Runtime-fout '424': Object vereist.

Laten we nu eens goed naar de code kijken.

In plaats van "Applicatie" te gebruiken, hebben we ten onrechte "Applicatie1" gebruikt, dus dit kwam de fout "Object vereist" in VBA-code tegen.

Als het woord "Option Explicit" is ingeschakeld, krijgen we de fout "Variable Not Defined".

Dingen om te onthouden

  • Object vereist betekent dat verwijzing naar objectgegevenstypen nauwkeurig moet zijn.
  • Als de optie expliciet woord niet is ingeschakeld in de codering, krijgen we de Object Required-fout voor verkeerd gespelde variabele woorden en als Option Explicit is ingeschakeld, krijgen we de variabele niet-gedefinieerde fout voor verkeerd gespelde variabele woorden.