VBA-objekt krävs

Objekt krävs i Excel VBA

Fel är en del av kodningsspråket, men det verkliga geniet ligger i att hitta felet och åtgärda dessa fel. Det första steget i att åtgärda dessa fel är intelligensen att hitta varför dessa fel uppstår. Om du kan hitta varför dessa fel kommer är det ett mycket enkelt jobb att åtgärda dessa fel utan att svettas. Ett sådant fel i VBA-kodning är "Objekt krävs".

Om du kommer ihåg när du lär dig variabler och tilldelar datatyper till dessa variabler har vi också "Objekt" -datatyper. När objektdatatypen tilldelats och om objektet inte finns i kalkylbladet eller arbetsboken som vi hänvisar till skulle vi få VBA-felmeddelandet som ”Objekt krävs” . Så som en ny kodare är det vanligt att ange panik i sådana situationer eftersom nybörjaren inte kan hitta orsaken till detta fel vid startnivån.

Varför uppstår ett obligatoriskt objekt? (och ... Hur fixar jag det?)

Ok, det krävs två eller tre exempel för att verkligen förstå varför detta fel uppstår och hur man åtgärdar det.

Du kan ladda ner denna Excel-mall för VBA-objekt här - VBA-mall för Excel-krav

För ett exempel, se nedanstående kod.

Koda:

 Sub Last_Row () Dim Wb som arbetsbok Dim Ws som arbetsblad Dim MyToday som datumuppsättning Wb = ThisWorkbook Set Ws = ThisWorkbook.Worksheets ("Data") Ställ MyToday = Wb.Ws.Cells (1, 1) MsgBox MyToday End Sub 

Låt mig förklara för dig ovanstående kod.

Jag har förklarat tre variabler och de två första variablerna hänvisar till ”Arbetsbok” och ”Arbetsblad” -objekten. Den tredje variabeln hänvisar till datatypen ”Datum”.

När datatyperna "Objekt" tilldelas variabeln måste vi använda ordet "Set" för att tilldela referensen för objektet till variabeln, så i de följande två raderna med "Set" nyckelordet har jag tilldelat referens av "ThisWorkbook" till variabeln "Wb" eftersom denna variabel håller objektdatatypen som "Workbook" och för variabeln "Ws" har jag tilldelat kalkylarkobjektet för "Data" -ark i denna arbetsbok.

 Ställ in Wb = ThisWorkbook
 Ställ in Ws = ThisWorkbook.Worksheets ("Data")
  • I nästa rad för datatypvariabeln "Date" har jag också använt nyckelordet "Set" för att tilldela värdet på cellen A1-värdet i denna arbetsbok (Wb) och i kalkylbladet "Data" (Ws).
 Ställ in MyToday = Wb.Ws.Cells (1, 1)
  • I nästa rad visar vi värdet på variabelvärdet "MyDate" för cell A1-värdet i meddelandefältet i VBA.
MsgBox MyToday
  • Ok, låt oss köra den här koden och se vad vi får som resultat.

Som du kan se ovan visar det VBA-felmeddelandet som "Objekt krävs" . Okej, det är dags att undersöka varför vi får detta felmeddelande.

  • I ovanstående felmeddelandebild i kodavsnittet medan felmeddelandet visas har den markerat feldelen av koden med blå färg.

  • Så frågan kvarstår är varför vi fick detta fel. Det första vi behöver se är just denna variabla datatyp. Gå tillbaka till föregående kodrad där vi har tilldelat datatypen till variabeln "MyDate".

  • Vi har tilldelat den variabla datatypen som "Datum" och kommer nu tillbaka till felraden nu.

I den här raden har vi använt nyckelordet "Set" medan vår datatyp inte är "Object" -datatypen. Så när VBA-koden ser nyckelordet "Set" antar det att det är en objektdatatyp och säger att det kräver en objektreferens.

Så, den nedersta raden är "Ange" nyckelord används för att referera endast för att referera till objektvariabler som kalkylblad, arbetsbok, etc. ...

Exempel nr 1

Ta nu en titt på koden nedan.

Koda:

 Sub Object_Required_Error () Range ("A101"). Value = Application1.WorksheetFunction.Sum (Range ("A1: A100")) End Sub 

I ovanstående kod har vi använt kalkylfunktionen "SUM" för att få summan av cellvärdena från A1 till A100. När du kör den här koden kommer vi att se fel nedan.

Hoppsan!! Det står ”Run-time error '424': Object Required.

Låt oss nu titta noga på koden nu.

Istället för att använda "Application" har vi felaktigt använt "Application1", så detta stötte på felet "Object Required" i VBA-kod.

Om ordet ”Option Explicit” är aktiverat får vi “Variable Not Defined” -felet.

Saker att komma ihåg

  • Objekt krävs innebär att referens för objektdatatyp måste vara korrekt.
  • När alternativet uttryckligt ord inte är aktiverat i kodningen kommer vi att få Object Required-fel för felstavade variabla ord och om Option Explicit är aktiverat får vi variabeln ej definierat fel för felstavade variabla ord.