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 hikoilematta. Yksi tällainen virhe VBA-koodauksessa on "Object Required".

Jos muistat, samalla kun opimme muuttujia ja määrität tietotyyppejä näille muuttujille, meillä on myös "Object" -tietotyyppejä. Kun objektitietotyyppi on määritetty ja jos kyseistä objektia ei ole laskentataulukossa tai työkirjassa, johon tarkoitamme menemistä, saisimme VBA-virheilmoituksen "Object Required". Joten uutena kooderina on yleistä sanoa paniikkia näissä tilanteissa, koska aloittelija ei voi löytää 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.

Katso esimerkiksi alla oleva koodi.

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ä osoittaaksemme objektin viittauksen muuttujalle, joten seuraavilla kahdella rivillä käyttämällä ”Set” -avainsanaa I ovat määrittäneet ”ThisWorkbook” -viitteen muuttujalle “Wb”, koska tämä muuttuja pitää objektitietotyypin nimellä ”Workbook” ja muuttujalle “Ws” olen määrittänyt tässä työkirjassa ”Data” -laskentataulukon objektin.

Aseta Wb = Tämä työkirja
Aseta Ws = ThisWorkbook.Worksheets ("Data")
  • Myös "Date" -tietomuuttujan seuraavalla rivillä olen käyttänyt "Set" -hakusanaa osoittamaan solun A1-arvon arvon tässä työkirjassa (Wb) ja laskentataulukossa "Data" (Ws).
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 virheviestikuvassa se on korostanut koodin virheosaa sinisellä värillä, vaikka 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, että se on 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ä sanotaan: "Suoritusaikavirhe '424': Objekti vaaditaan.

Katsotaan nyt tarkasti koodia nyt.

"Sovelluksen" käyttämisen sijaan olemme virheellisesti 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 vaihtoehtoa 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.

Mielenkiintoisia artikkeleita...