VBA-object vereist - Hoe object vereiste fout in Excel VBA te repareren?

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 je zorgen te maken. Een van die fouten in VBA-codering is 'Object vereist'.

Als u zich herinnert, hebben we tijdens het leren van variabelen en het toewijzen van gegevenstypen aan die variabelen ook "Object" -gegevenstypen. Wanneer 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". Als nieuwe coder is het dus gebruikelijk om in die situaties paniek te melden, omdat een beginner op het beginniveau de oorzaak van deze fout niet kan 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.

Kijk bijvoorbeeld 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 het woord 'Set'-toets gebruiken om de referentie van het object aan de variabele toe te wijzen, dus in de volgende twee regels, door het sleutelwoord' Set 'te gebruiken, I heb de verwijzing van "ThisWorkbook" toegewezen aan de variabele "Wb" omdat deze variabele het objectgegevenstype "Werkboek" bevat en voor de variabele "Ws" heb ik het werkbladobject van het werkblad "Gegevens" 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 coderegel waar we het gegevenstype 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 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 de onderstaande fout tegenkomen.

Oeps !! Er staat: “Runtime-fout '424': object vereist.

Laten we nu de code eens goed bekijken.

In plaats van "Toepassing" te gebruiken, hebben we ten onrechte "Toepassing1" 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.

Interessante artikelen...