Virheenkäsittelijät Excel-makroille

Virheenkäsittelijöiden avulla voit määrittää, mitä tapahtuu, kun Excel-makrokoodin suorittamisen aikana tapahtuu virhe. Virhekäsittelijät ovat rivejä, jotka ovat samankaltaisia ​​kuin seuraavat:

On Error GoTo MyError

Ilman virheenkäsittelijöitä kaikki koodissasi ilmenevät virheet kehottavat Exceliä aktivoimaan vähemmän hyödyllisen virhesanoman, joka ei yleensä kerro tapahtuneesta selkeästi. Virheenkäsittelijöiden avulla voit kuitenkin jättää virheen huomioimatta tai poistua koodista kauniisti omalla viestilläsi käyttäjälle.

On olemassa kolmenlaisia ​​On Error -lauseita:

  • On Error GoTo SomeLabel: Koodi hyppää määritettyyn tarraan.

  • Virheestä Jatka seuraavaksi: Virhe ohitetaan ja koodi jatkuu.

  • Virhe GoTo 0: VBA palaa normaaliin virheentarkistustoimintaan.

On Error GoTo SomeLabel

Joskus koodin virhe tarkoittaa, että sinun on poistuttava toimenpiteestä sulavasti ja annettava käyttäjille selkeä viesti. Näissä tilanteissa voit käyttää On Error GoTo -käskyä käskeäksesi Exceliä siirtymään tietylle koodiriville.

Esimerkiksi seuraavassa pienessä koodinpätkässä kehotat Exceliä jakamaan solun A1 arvon solun A2 arvolla ja sijoittamaan sitten vastauksen soluun A3. Helppo. Mikä voisi mennä pieleen?

Alamakro1()
Alue("A3").Arvo = Alue("A1").Arvo / Alue("A2").Arvo
Lopeta ala

Kuten käy ilmi, kaksi suurta asiaa voi mennä pieleen. Jos solussa A2 on 0, saat jako nollalla -virheen. Jos solu A2 sisältää ei-numeerisen arvon, saat tyyppivirheen.

Voit välttää ikävän virhesanoman kertomalla Excelille, että On Error haluat koodin suorituksen siirtyvän MyExit-nimiseen tunnisteeseen.

Seuraavassa koodissa MyExit-tarraa seuraa käyttäjälle viesti, joka antaa ystävällisiä neuvoja ilkeän virheilmoituksen sijaan. Huomaa myös Exit Sub -rivi ennen MyExit-tunnistetta, joka varmistaa, että koodi yksinkertaisesti poistuu, jos virhettä ei tapahdu:

Alamakro1()
Virheessä Siirry MyExitiin
Alue("A3").Arvo = Alue("A1").Arvo / Alue("A2").Arvo
Poistu Subista
MyExit:
MsgBox "Käytä kelvollisia nollasta poikkeavia numeroita"
Lopeta ala

Virheestä Jatka seuraavaksi

Joskus haluat Excelin ohittavan virheen ja yksinkertaisesti jatkavan koodin suorittamista. Näissä tilanteissa voit käyttää On Error Resume Next -lausetta.

Esimerkiksi seuraava koodinpätkä on tarkoitettu poistamaan tiedosto nimeltä GhostFile.exe C:Temp-hakemistosta. Kun tiedosto on poistettu, mukava viestilaatikko kertoo käyttäjälle, että tiedosto on poissa:

Alamakro1()
Tapa "C:TempGhostFile.exe"
MsgBox "Tiedosto on poistettu."
Lopeta ala

Koodi toimii hyvin, jos poistettava tiedosto on todellakin. Mutta jos jostain syystä tiedostoa nimeltä GhostFile.exe ei ole C:Temp-asemassa, tapahtuu virhe.

Tässä tapauksessa et välitä, jos tiedosto ei ole siellä, koska aiot poistaa sen joka tapauksessa. Joten voit yksinkertaisesti jättää virheen huomioimatta ja jatkaa koodilla.

Käyttämällä On Error Resume Next -käskyä koodi kulkee kulkuaan riippumatta siitä, onko kohdetiedosto olemassa vai ei:

Alamakro1()
Virheestä Jatka seuraavaksi
Tapa "C:TempGhostFile.exe"
MsgBox "Tiedosto on poistettu."
Lopeta ala

Virheessä GoTo 0

Tiettyjä virheilmoituksia käytettäessä voi olla tarpeen nollata VBA:n virheentarkistuskäyttäytyminen. Ymmärtääksesi, mitä tämä tarkoittaa, katso seuraava esimerkki.

Täällä haluat ensin poistaa tiedoston nimeltä GhostFile.exe C:Temp-hakemistosta. Voit välttää virheet, jotka voivat johtua siitä, ettei kohdetiedostoa ole olemassa, käyttämällä On Error Resume Next -lausetta. Sen jälkeen yrität tehdä epäilyttävää matematiikkaa jakamalla 100/Mike:

Alamakro1()
Virheestä Jatka seuraavaksi
Tapa "C:TempGhostFile.exe"
Alue ("A3"). Arvo = 100 / "Mike"
Lopeta ala

Tämän koodinpätkän suorittamisen pitäisi tuottaa virheen sumean matematiikan takia, mutta se ei tee sitä. Miksi? Koska viimeisin koodille antamasi ohje oli On Error Resume Next. Kaikki tämän rivin jälkeen havaitut virheet jätetään huomioimatta.

Voit korjata tämän ongelman jatkamalla normaalia virheentarkistustoimintaa On Error GoTo 0 -käskyn avulla:

Alamakro1()
Virheestä Jatka seuraavaksi
Tapa "C:TempGhostFile.exe"
Virheessä GoTo 0
Alue ("A3"). Arvo = 100 / "Mike"
Lopeta ala

Tämä koodi ohittaa virheet On Error GoTo 0 -lauseeseen asti. Tämän lausunnon jälkeen koodi palaa normaaliin virheentarkistustilaan ja laukaisee odotetun virheen, joka johtuu sumeasta matematiikasta.


Kuinka estää Microsoft Wordia avaamasta tiedostoja vain luku -tilassa Windowsissa

Kuinka estää Microsoft Wordia avaamasta tiedostoja vain luku -tilassa Windowsissa

Kuinka estää Microsoft Wordia avaamasta tiedostoja vain luku -tilassa Windowsissa Microsoft Word avaa tiedostot vain luku -tilassa, jolloin niiden muokkaaminen on mahdotonta? Älä huoli, menetelmät ovat alla

Microsoft Word -asiakirjojen virheellisen tulostuksen korjaaminen

Microsoft Word -asiakirjojen virheellisen tulostuksen korjaaminen

Virheiden korjaaminen virheellisten Microsoft Word -asiakirjojen tulostuksessa. Virheet tulostettaessa Word-asiakirjoja, joissa on muuttuneet fontit, sotkuiset kappaleet, puuttuva teksti tai kadonnut sisältö ovat melko yleisiä. Älä kuitenkaan

Pyyhi kynä- ja korostuspiirrokset PowerPoint-dioistasi

Pyyhi kynä- ja korostuspiirrokset PowerPoint-dioistasi

Jos olet piirtänyt PowerPoint-dioihin esityksen aikana kynää tai korostuskynää, voit tallentaa piirustukset seuraavaa esitystä varten tai poistaa ne, jotta seuraavan kerran näytät ne. Aloitat puhtailla PowerPoint-dioilla. Pyyhi kynä- ja korostuskynäpiirrokset noudattamalla näitä ohjeita: Pyyhi rivit yksi kerrallaan […]

Tyylikirjaston sisältö SharePoint 2010:ssä

Tyylikirjaston sisältö SharePoint 2010:ssä

Tyylikirjasto sisältää CSS-tiedostoja, Extensible Stylesheet Language (XSL) -tiedostoja ja kuvia, joita käyttävät ennalta määritetyt sivupohjat, sivuasettelut ja säätimet SharePoint 2010:ssä. CSS-tiedostojen etsiminen julkaisusivuston tyylikirjastosta: Valitse Sivuston toiminnot→ Näytä Kaikki sivuston sisältö. Sivuston sisältö tulee näkyviin. Style-kirjasto sijaitsee […]

Muotoile numerot tuhansiksi ja miljooniksi Excel-raporteissa

Muotoile numerot tuhansiksi ja miljooniksi Excel-raporteissa

Älä hukuta yleisöäsi jättimäisillä numeroilla. Microsoft Excelissä voit parantaa koontinäyttöjesi ja raporttiesi luettavuutta muotoilemalla numerot näyttämään tuhansia tai miljoonia.

SharePoint-sivustojen jakaminen ja seuraaminen

SharePoint-sivustojen jakaminen ja seuraaminen

Opi käyttämään SharePointin sosiaalisen verkostoitumisen työkaluja, joiden avulla yksilöt ja ryhmät voivat kommunikoida, tehdä yhteistyötä, jakaa ja pitää yhteyttä.

Kuinka muuntaa päivämäärät Julian-muotoihin Excelissä

Kuinka muuntaa päivämäärät Julian-muotoihin Excelissä

Juliaanisia päivämääriä käytetään usein valmistusympäristöissä aikaleimana ja pikaviitteenä eränumerolle. Tämän tyyppisen päivämääräkoodauksen avulla jälleenmyyjät, kuluttajat ja huoltoedustajat voivat tunnistaa tuotteen valmistusajankohdan ja siten tuotteen iän. Julian-päivämääriä käytetään myös ohjelmoinnissa, armeijassa ja tähtitiedessä. Erilainen […]

Access-verkkosovelluksen luominen

Access-verkkosovelluksen luominen

Voit luoda verkkosovelluksen Access 2016:ssa. Mikä verkkosovellus sitten on? No, verkko tarkoittaa, että se on verkossa, ja sovellus on vain lyhenne sanoista "sovellus". Mukautettu verkkosovellus on online-tietokantasovellus, jota käytetään pilvestä selaimen avulla. Rakennat ja ylläpidät verkkosovellusta työpöytäversiossa […]

Pikakäynnistyspalkki SharePoint 2010:ssä

Pikakäynnistyspalkki SharePoint 2010:ssä

Useimmat SharePoint 2010:n sivut näyttävät navigointilinkkien luettelon pikakäynnistyspalkissa sivun vasemmassa reunassa. Pikakäynnistyspalkki näyttää linkit esitellyn sivuston sisältöön, kuten luetteloihin, kirjastoihin, sivustoihin ja julkaisusivuihin. Pikakäynnistyspalkki sisältää kaksi erittäin tärkeää linkkiä: Koko sivuston sisältö -linkki: […]

Mitä Ratkaisijan virheilmoitukset Excelissä tarkoittavat?

Mitä Ratkaisijan virheilmoitukset Excelissä tarkoittavat?

Yksinkertaisille ongelmille Excelin Ratkaisija löytää yleensä nopeasti optimaaliset Ratkaisijamuuttujien arvot tavoitefunktiolle. Mutta joissakin tapauksissa Ratkaisijalla on vaikeuksia löytää Solver-muuttujan arvoja, jotka optimoivat tavoitefunktion. Näissä tapauksissa Ratkaisija näyttää yleensä viestin tai virheilmoituksen, joka kuvaa tai käsittelee ongelmaa, jonka […]