VBA objektum szükséges - Hogyan javítható az objektum szükséges hibája az Excel VBA-ban?

Objektum szükséges az Excel VBA-ban

A hibák a kódolási nyelv részei, de az igazi zseni a hiba megtalálásában és a hibák kijavításában rejlik. A hibák kijavításának első lépése az intelligencia annak kiderítésére, hogy miért fordulnak elő ezek a hibák. Ha megtudja, miért jönnek ezek a hibák, akkor nagyon könnyű feladat ezeket a hibákat kijavítani verejtékezés nélkül. A VBA kódolás egyik ilyen hibája az „Object Object”.

Ha emlékszel, változók tanulása és adattípusok hozzárendelése során ezekhez a változatokhoz „Object” típusú adataink is vannak. Amikor az objektum adattípusa van hozzárendelve, és ha az objektum nem létezik a munkalapon vagy a munkafüzetben, amelyre hivatkozunk, akkor a VBA hibaüzenetet „Object Object” néven kapjuk meg . Új kódolóként tehát gyakran kijelentik, hogy pánikba esnek ezekben a helyzetekben, mert a kezdő szinten egy kezdő nem találja ennek a hibának az okát.

Miért történik az objektumhoz szükséges hiba? (és … hogyan javítható?)

Ok, két vagy három példa szükséges ahhoz, hogy megértsük, miért fordul elő ez a hiba és hogyan lehet kijavítani.

Nézze meg például az alábbi kódot.

Kód:

Sub Last_Row () Dim Wb munkafüzetként Dim Ws mint munkalap Dim MyToday as Date Set Wb = ThisWorkbook Set Ws = ThisWorkbook.Worksheets ("Data") Set MyToday = Wb.Ws.Cells (1, 1) MsgBox MyToday End Sub

Hadd magyarázzam el neked a fenti kódot.

Három változót deklaráltam, és az első két változó a „Munkafüzet” és a „Munkalap” objektumokra vonatkozik. A harmadik változó a „Dátum” adattípusra utal.

Amikor az „Object” adattípusokat hozzárendelik a változóhoz, akkor a „Set” kulcs használatával kell az objektum hivatkozását hozzárendelni a változóhoz, így a következő két sorban a „Set” kulcsszó használatával I hozzárendelték a „ThisWorkbook” hivatkozást a „Wb” változóhoz, mert ez a változó az objektum adattípust „Munkafüzet” néven tartja, a „Ws” változóhoz pedig a „Data” munkalap munkalap objektumát rendeltem ebben a munkafüzetben.

Set Wb = ThisWorkbook
Set Ws = ThisWorkbook.Worksheets ("Data")
  • A „Dátum” adattípus változó következő sorában szintén a „Set” kulcsszót használtam az A1 cella értékének hozzárendeléséhez ebben a munkafüzetben (Wb) és az „Data” munkalapon (Ws).
Set MyToday = Wb.Ws.Cells (1, 1)
  • A következő sorban megmutatjuk az A1 cella értékének „MyDate” változó értékét a VBA üzenetmezőjében.
MsgBox MyToday
  • Ok, futtassuk ezt a kódot, és nézzük meg, mit kapunk ennek eredményeként.

Mint fent láthatja, a VBA hibaüzenet „Object Object” -ként jelenik meg . Oké, ideje megvizsgálnunk, miért kapjuk ezt a hibaüzenetet.

  • A fenti hibaüzenet képen a kód részben a hibaüzenet megjelenítése közben kék színnel emelte ki a kód hiba részét.
  • Tehát a kérdés továbbra is az, miért kaptuk ezt a hibát. Az első dolog, amit látnunk kell, az a bizonyos változó adattípus. Térjen vissza az előző kódsorhoz, ahol az adattípust a „MyDate” változóhoz rendeltük.
  • A változó adattípust “Dátum” -nak rendeltük, és most térünk vissza a hibasorhoz.

Ebben a sorban a „Set” kulcsszót használtuk, míg az adattípusunk nem az „Object” adattípus. Tehát abban a pillanatban, amikor a VBA kód meglátja a „Beállítás” kulcsszót, feltételezi, hogy objektum adattípus, és azt mondja, hogy objektumreferenciára van szükség.

Tehát az alsó sor a „Beállítás” kulcsszó, amely csak az objektumváltozók hivatkozására utal, például a munkalapra, a munkafüzetre stb.

1. példa

Most vessen egy pillantást az alábbi kódra.

Kód:

Sub Object_Required_Error () tartomány ("A101"). Érték = Application1.WorksheetFunction.Sum (tartomány ("A1: A100")) End Sub

A fenti kódban a „SUM” munkalapfüggvényt használtuk az A1 és A100 közötti cellák összértékének megszerzésére. Amikor futtatja ezt a kódot, az alábbi hibát fogjuk tapasztalni.

Hoppá !! Azt mondja: „Futásidejű hiba„ 424 ”: Object Object.

Most nézzük meg alaposan a kódot.

Az „Alkalmazás” helyett tévesen az „Alkalmazás1” -t használtuk, így ez az „Object Required” hibával találkozott a VBA kódban.

Ha az „Option Explicit” szó engedélyezve van, akkor a „Változó nincs meghatározva” hibaüzenetet kapjuk.

Dolgok, amikre emlékezni kell

  • Object Object: az objektum adattípus hivatkozásának pontosnak kell lennie.
  • Ha az explicit szó opció nincs engedélyezve a kódolásban, akkor hibásan írt változó szavakhoz kapjuk az Object Required hibát, és ha az Explicit opció engedélyezve van, akkor a hibásan írt változó szavakhoz a nem definiált változó hibát kapjuk.

érdekes cikkek...