VBA virheessä

VBA On Error on helppo tapa käsitellä odottamattomia poikkeuksia Excel Macros -ohjelmassa. Tiedetään, että emme voi kirjoittaa koodia ilman virheitä. Joskus ison koodin kirjoittaminen voi antaa meille virheen jopa kokoamisen yhteydessä. Tällaisen tilanteen välttämiseksi lisäämme virhesanoman, joka oikean vastauksen tai virhekoodin sijasta näyttää meille virhekoodin sisältävän viestin. Näyttää siltä, ​​että saimme laskelman tulosteen, mutta virhekoodi tulostuu.

Kuinka käyttää Excel VBA: tä virheilmoituksessa Excelissä?

VBA: lla on 3 virhetapaa. Ymmärretään erilaisia ​​tapoja esimerkiksi.

Esimerkki # 1

Ensimmäinen virhetyyppi on Koodin käännösvirhe, joka tulee, kun koodia ei ilmoiteta tai mahdottomia muuttujia. Ymmärtääksesi enemmän käytämme yksinkertaista matemaattista lauseketta jakoon. Siirry tätä varten VBA: n Lisää valikkoon ja valitse moduuli alla olevan kuvan mukaisesti.

Avaa nyt alaluokka ja lisää mikä tahansa nimi. Koska käytämme virhettä, olemme nimittäneet samoiksi.

 Sub OnError () Loppu Sub 

Määritä nyt kaikki 2 tai 3 kokonaislukua. Täällä otetaan X ja Y kokonaislukuina.

 Sub OnError () himmentää X kokonaislukuna, Y kokonaislukuna, Z kokonaislukuna Loppu alaosa 

Nyt kuten edellä käsiteltiin, laskemme jako-matemaattisen lausekkeen. X: lle laitamme merkin Numeratoriin ja jaamme sen 0. Ja Y on 20/2, joka on täydellisiä numeroita.

 Sub OnError () himmentää X kokonaislukuna, Y kokonaislukuna X = Testi / 0 Y = 20/2 Loppu Sub 

Suorita nyt koodi F5-näppäimellä tai napsauttamalla toistopainiketta alla olevan kuvan mukaisesti. Saamme ajonaikaisen virheen 6, joka näyttää Teksti yli numerovirheen.

Nyt tämän virheen ohittamiseksi lisäämme yhden rivin On Error Resume Next -kohtaan ennen matemaattisen koodin kirjoittamista. Se hyppää virhekoodista, mutta emme näe toisen matemaattisen koodin tulosta. Tämä piilottaa virhesanoman vain, jos useita koodirivejä, kuten alla on esitetty. Yritä nyt suorittaa myös koodi.

 Sub OnError () himmennetään X kokonaislukuna, Y kokonaislukuna virheessä jatka seuraavaksi X = Test / 0 Y = 20/2 MsgBox X MsgBox Y End Sub 

Nyt tämän virheen ohittamiseksi lisäämme yhden rivin On Error Resume Next -kohtaan ennen matemaattisen koodin kirjoittamista. Se hyppää virhekoodista, mutta emme näe toisen matemaattisen koodin tulosta. Tämä piilottaa virhesanoman vain, jos useita koodirivejä, kuten alla on esitetty. Yritä nyt suorittaa myös koodi.

Esimerkki 2

Tässä esimerkissä tarkastellaan sitä matemaattista jakoa, joka antaa äärettömän tuloksen, mutta koodauksessa, se on # DIV / 0-tulos. Tämän osoittamiseksi otamme huomioon vielä yhden kokonaisluvun Z sekä X: n ja Y: n alaluokissa, kuten alla on esitetty.

 Sub OnError () himmentää X kokonaislukuna, Y kokonaislukuna, Z kokonaislukuna Loppu alaosa 

Rajaa nyt kaikki kokonaisluvut X, Y ja Z matemaattisella jako-lausekkeella ja tulosta se käyttämällä MsgBox-toimintoa kunkin kokonaisluvun tuloksen VBA: ssa.

Alla kokonaislukua X varten olemme jakaneet 10 luvulla 0, 20 2: lla ja 30: llä 4: llä.

 Sub OnError () himmentää X kokonaislukuna, Y kokonaislukuna, Z kokonaislukuna X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Suorita nyt koodi F5-näppäimellä tai manuaalisesti alla olevan kuvan mukaisesti.

Kuten yllä olevassa kuvakaappauksessa voidaan nähdä, ajonaikainen virhe 11, mikä tarkoittaa, että virhe liittyy numeroon. Nyt tämän ratkaisemiseksi lisää yksi rivi On Error Resume Next -kohtaan ennen matemaattista lauseketta kuten alla.

 Sub OnError () himmentää X kokonaislukuna, Y kokonaislukuna, Z kokonaislukuna virheessä Jatka seuraavaksi X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Nyt jos suoritamme koodin, saamme nollan ensimmäiselle kokonaisluvulle X ja Y: lle ja Z: lle saamme vastaavat jakovastaukset alla esitetyllä tavalla.

Esimerkki 3

Toinen tyyppinen virhe näkyy, kun syötetään virheellinen tietojen syöttäminen koodiin. Tätä varten harkitaan 3 kokonaislukua X, Y ja Z avaamalla alaluokka VBA: ssa alla olevan kuvan mukaisesti.

 Sub OnError () himmentää X kokonaislukuna, Y kokonaislukuna, Z kokonaislukuna Loppu alaosa 

Nyt tarkastellaan myös samaa matemaattista jakoa, jonka olemme nähneet yllä olevassa esimerkissä.

 Sub OnError () himmentää X kokonaislukuna, Y kokonaislukuna, Z kokonaislukuna X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Jos suoritamme koodin, saamme saman virheviestin Run-time error 11: stä.

Nyt voit korvata tämän virheen käyttämällä tekstiä virheessä GoTo sanalla “Result ohittaaksesi virhesanoman ja saadaksesi tulosteen, joka toimii hyvin alla olevan kuvan mukaisesti.

 Sub OnError () himmentää X kokonaislukuna, Y kokonaislukuna, Z kokonaislukuna virheessä GoTo ZResult: X = 10/0 Y = 20/2 ZTulos: Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Suorita nyt koodi uudelleen. Tuloksena on sama tulos kuin edellisessä esimerkissä.

On Error GoTo ZResult auttaa meitä siirtymään suoraan mainittuun tulospisteen kokonaislukuun, kuten teimme kokonaislukuun Z.

Esimerkki 4

Kolmannen tyyppisessä virheessä, kun suoritamme koodia, ja VBA ei pysty ymmärtämään koodiriviä. Tämä voidaan tehdä koodilla On Error Resume Next sekä MsgBox Err.Number -koodilla . Harkitse samoja tietoja kuin yllä olevissa esimerkeissä. Näemme jälleen samat 3 kokonaislukua X, Y ja Z, kuten alla on esitetty.

 Sub OnError () himmentää X kokonaislukuna, Y kokonaislukuna, Z kokonaislukuna Loppu alaosa 

Ja tulostettavan tulosteen tulostamiseksi sallia kaikkien kokonaislukujen viestiruutujen tulostus.

 Sub OnError () himmentää X kokonaislukuna, Y kokonaislukuna, Z kokonaislukuna X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Nyt, jos suoritamme täydellisen koodin, niin saamme virheilmoituksen matemaattisesta virheestä Käyntiajan virhe 11.

Nyt tämän virheen ohittamiseksi käytämme On Error Resume Next -painiketta.

 Sub OnError () himmentää X kokonaislukuna, Y kokonaislukuna, Z kokonaislukuna virheessä Jatka seuraavaksi X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Ja suorita koodi. Tämä antaa käyttötuloksen kelvollisella matemaattisella rivillä, kuten alla on esitetty.

Lisää nyt ZResult- koodirivi ennen Z-kokonaisluvun matemaattista lauseketta ja lisää MsgBox Err.Number -koodirivi koodin loppuun, kuten alla.

 Sub OnError () himmentää X kokonaislukuna, Y kokonaislukuna, Z kokonaislukuna virheessä jatkaa seuraavaksi X = 10/0 Y = 20/2 ZTulos: Z = 30/4 MsgBox X MsgBox Y MsgBox Z MsgBox Err.Number End Sub 

Suorita nyt koodi F5-näppäimellä tai painamalla toistopainiketta alla olevan kuvan mukaisesti.

Kuten näemme yllä olevista kuvakaappauksista. Ensimmäisessä viestiruudussa on 0, joka ohittaa väärän matemaattisen lausekkeen. Toisella ja kolmannella on jakaantulos Y- ja Z-kokonaisluvuista. Ja viimeisessä viestiruudussa on ajonaikainen virhekoodi 11, joka on todennäköisesti X-kokonaisluvun jakolausekkeiden virhekoodi.

Plussaa VBA virheestä

  • Voimme laskea minkä tahansa matemaattisen kaavan, vaikka se olisi väärä.
  • Suuremmissa koodausrakenteissa, joissa on mahdollisuuksia tai virhe, näiden menetelmien käyttö voi antaa oikean tuloksen jopa koodirivillä.
  • Tämä antaa paremman tuloksen verrattuna normaalien excel-laskelmien tulokseen.

Muistettavat asiat

  • Tallenna tiedosto aina makro-käytössä olevaan Excel-tiedostoon, jotta voimme käyttää luotua VBA-koodia monta ja monta kertaa.
  • Käännä kirjoitettu koodi aina ennen Excel-vaatimusten käyttöönottoa.
  • Määritä tarvittaessa kirjoitettu koodi mille tahansa painikkeelle, jotta voimme nopeasti napsauttaa painiketta ja suorittaa koodin.

Voit ladata tämän VBA On Error Excel -mallin täältä - VBA On Error Excel Template

Suositellut artikkelit

Tämä on opas Excel VBA-virheestä. Tässä keskustelimme siitä, miten VBA-virheilmoitusta voidaan käyttää yhdessä joidenkin käytännön esimerkien ja ladattavan excel-mallin kanssa. Voit myös käydä läpi muiden ehdottamiemme artikkeleidemme -

  1. Kuinka käyttää VBA TRIM -toimintoa?
  2. Numeroformaatti VBA: ssa
  3. Opas Excel VBA: lle Tee silmukka
  4. Kuinka käyttää VBA-hakutoimintoa?

Luokka: