Vaadittu VBA-objekti | Kuinka korjata vaadittu objektivirhe Excel VBA: ssa?

Objekti vaaditaan Excel VBA: ssa

Virheet ovat olennainen osa koodauskieliä, mutta todellinen nero on virheen löytämisessä ja virheiden korjaamisessa. Ensimmäinen vaihe näiden virheiden korjaamisessa on älykkyys sen selvittämiseksi, miksi virheet tapahtuvat. Jos huomaat, miksi nämä virheet ovat tulossa, on erittäin helppo korjata nämä virheet rikkomatta hikeä. Yksi tällainen virhe VBA-koodauksessa on ”Object Required”.

Jos muistat opiskellessasi muuttujia ja määrittäessäsi tietotyyppejä näille muuttujille, meillä on myös “Object” -tietotyyppejä. Kun määritetty objektitietotyyppi ja jos kyseistä objektia ei ole viittaavassa laskentataulukossa tai työkirjassa, saisimme VBA-virheilmoituksen "Object Required" . Joten uutena kooderina on tavallista sanoa paniikkia näissä tilanteissa, koska aloitustasolla aloittelija ei löydä syytä tähän virheeseen.

Miksi vaaditun objektin virhe tapahtuu? (ja ... kuinka korjaan sen?)

Ok, kestää kaksi tai kolme esimerkkiä, jotta ymmärrämme todella, miksi tämä virhe tapahtuu ja kuinka korjata se.

Voit ladata tämän VBA-objektin vaaditun Excel-mallin täältä - VBA-objekti vaaditaan Excel-malli

Katso esimerkki alla olevasta koodista.

Koodi:

 Sub Last_Row () Himmennä Wb Työkirjana Dim Ws Työkirjana Dim MyToday as Date Set Wb = ThisWorkbook Set Ws = ThisWorkbook.Worksheets ("Data") Set MyToday = Wb.Ws.Cells (1, 1) MsgBox MyToday End Sub 

Anna minun selittää sinulle yllä oleva koodi sinulle.

Olen ilmoittanut kolme muuttujaa ja kaksi ensimmäistä muuttujaa viittaavat "Workbook" ja "Worksheet" -objekteihin. Kolmas muuttuja viittaa ”Date” -tietotyyppiin.

Kun muuttujalle määritetään “Object” -tietotyypit, meidän on käytettävä sanaa ”Set” -näppäintä määrittelemään objektin viite muuttujalle, joten seuraavilla kahdella rivillä käyttämällä ”Set” -hakusanaa olen määrittänyt "ThisWorkbook" -viittaus muuttujaan "Wb", koska tämä muuttuja pitää objektitietotyypin nimellä "Workbook" ja muuttujalle "Ws" olen määrittänyt "Data" -laskentataulukon objektin tähän työkirjaan.

 Aseta Wb = Tämä työkirja
 Aseta Ws = ThisWorkbook.Worksheets ("Data")
  • Myös datatyyppimuuttujan ”Päivämäärä” seuraavalla rivillä olen käyttänyt ”Aseta” avainsanaa tämän työkirjan (Wb) ja laskentataulukon ”Data” (Ws) A1-arvon arvon määrittämiseen.
 Aseta MyToday = Wb.Ws.Cells (1, 1)
  • Seuraavalla rivillä näytetään solun A1 arvon "MyDate" -muuttuja-arvo VBA: n viestiruudussa.
MsgBox MyToday
  • Ok, ajetaan tämä koodi ja katsotaan mitä saamme tuloksena.

Kuten yllä voit nähdä, se näyttää VBA-virheilmoituksen "Object Required" . Ok, on aika tutkia, miksi saamme tämän virheilmoituksen.

  • Yllä olevassa koodiosan virheilmoituskuvassa korostettuaan virheen koodin sinisellä värillä, samalla kun se näyttää virheilmoituksen.

  • Joten kysymys on edelleen siitä, miksi saimme tämän virheen. Ensimmäinen asia, joka meidän on nähtävä, on tämä muuttujan tietotyyppi. Palaa edelliselle koodiriville, jossa olemme määrittäneet tietotyypin muuttujalle "MyDate".

  • Olemme määrittäneet muuttujan tietotyypiksi päivämäärän ja palanneet nyt virheriville.

Tällä rivillä olemme käyttäneet avainsanaa "Set", kun taas tietotyyppimme ei ole "Object" -tietotyyppi. Joten tällä hetkellä, kun VBA-koodi näkee avainsanan "Aseta", se olettaa olevansa objektitietotyyppi ja sanoo tarvitsevansa objektiviitteen.

Joten, alimmalla rivillä on "Aseta" avainsana, jota käytetään viittaamaan vain objektimuuttujiin, kuten laskentataulukko, työkirja jne.

Esimerkki 1

Katsokaa nyt alla olevaa koodia.

Koodi:

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

Edellä olevassa koodissa olemme käyttäneet laskentataulukko-funktiota "SUM" saadaksemme soluarvojen kokonaismäärät A1: stä A100: een. Kun suoritat tämän koodin, kohtaamme alla olevan virheen.

Oho!! Siinä lukee ”Suoritusaikavirhe” 424 ”: Objekti vaaditaan.

Katsotaan nyt tarkasti koodia nyt.

"Sovelluksen" käyttämisen sijaan olemme vahingossa käyttäneet "Sovellusta 1", joten tämä havaitsi virheen "Object Required" VBA-koodissa.

Jos sana “Option Explicit” on käytössä, saamme “Variable Not Defined” -virheen.

Muistettavaa

  • Object Required tarkoittaa, että objektitietotyyppiviittauksen on oltava tarkka.
  • Kun vaihtoehtoinen eksplisiittinen sana ei ole käytössä koodauksessa, saamme Object Required -virheen väärin kirjoitetuille muuttujasanoille ja jos Option Explicit on käytössä, saamme muuttujaa ei määritelty virhe virheellisesti kirjoitetuille muuttujasanoille.