VBA On Virhe Jatka Seuraava tai Siirry 0

Tämä opetusohjelma selittää VBA On Error Resume Next ja Goto Statement.

Vaikka koodisi olisi rakennettu täydellisesti, käyttäjä ei ehkä toimi odotetulla tavalla. Tästä syystä sinun on lisättävä virheenkäsittelijät koodiin aina, kun virhe voi tapahtua.

Virhe Jatka seuraavaksi

On Error Resume Next -lauseke kehottaa VBA: ta ohittamaan kaikki virheitä sisältävät koodirivit ja siirtymään seuraavalle riville. VBA ohittaa rivin tai rivit, joissa on virhe, ja siirtyy seuraavalle koodiriville.

Tästä on hyötyä, kun ohittamaton koodirivi ei ole kriittinen makron onnistuneen suorittamisen kannalta, mutta voi olla vaarallinen, jos sitä käytetään väärin, koska se voi aiheuttaa tahattomia tuloksia.

Esimerkiksi alla olevassa menettelyssä:

123456 AlipiilotaKaikki taulukot ()Dim ws laskentataulukkonaJokaista ws ActiveWorkbook.Sheetsws.Visible = VääräSeuraava wsEnd Sub

Jos suoritamme tämän koodin, saamme virheilmoituksen, koska emme voi piilottaa kaikkia työkirjan laskentataulukoita - ainakin yhden työkirjan on oltava näkyvissä.

Jos kuitenkin muutamme menettelyä alla kuvatulla tavalla, koodi jatkaa virheen ohi ja jättää työkirjan viimeisen arkin näkyviin.

1234567 AlipiilotaKaikki taulukot ()Virhe Jatka seuraavaksiDim ws laskentataulukkonaJokaista ws ActiveWorkbook.Sheetsws.Visible = VääräSeuraava wsEnd Sub

Virhe GoTo 0

Jos koodissamme ei ole virhekäsittelijää, Virhe Siirry 0 on Excelin oletusasetus. Tämä tarkoittaa pohjimmiltaan sitä, kun virhe tapahtuu Virhe GoTo 0, VBA lopettaa koodin suorittamisen ja näyttää tavallisen virheilmoitusruudun, esimerkiksi:

Jos olemme asettaneet virheloukun, kuten Virhe Jatka seuraavaksi koodissamme, mutta sitten haluamme palauttaa virheen oletusarvoon, voimme lisätä Virhe Siirry 0 rivi koodiin.

12345678910 AlivirheGoTo0 ()Virhe Jatka seuraavaksiDim ws laskentataulukkonaJokaista ws ActiveWorkbook.Sheetsws.Visible = VääräSeuraava wsVirhe GoTo 0'Suorita lisää koodia esimerkiksi täällä:ActiveSheet.Name = "Taulukko1"End Sub

Nyt jos koodissamme oli virhe virheen jälkeen Virhe Siirry 0 linja, Excelin oletusvirhesanoma tulee näkyviin. Tässä esimerkissä meillä on jo taulukko nimeltä Sheet1 ActiveWorkbookissa koodina edellä Virhe Siirry 0 piilottaa taulukon, mutta ei poista sitä. Excelin oletusvirhesanoma, joka osoittaa, että taulukon nimi on jo otettu, näytetään.

Virhe Siirry kohtaan Linja

Voimme myös pakottaa koodimme siirtymään eri koodiriville käyttämällä Virhe Goto Linja joka käskee VBA: n siirtymään tietylle koodiriville, jos tapahtuu virhe.

123456789101112 AlivirheGoToLine ()Virhe Jatka seuraavaksiDim ws laskentataulukkonaJokaista ws ActiveWorkbook.Sheetsws.Visible = VääräSeuraava wsVirhe GoTo errhandlerActiveSheet.Name = "Taulukko1"Lopeta Subvirheenkäsittelijä:MsgBox ("On jo arkki nimeltä sheet1!", VbCritical)End Sub

Yllä olevassa esimerkissä, kun koodi löytää taulukon "Sheet1", se siirtyy koodiriville virheenkäsittelijän tunnisteen alapuolelle - tässä tapauksessa se kutsuu mukautetun viestiruudun, jossa kerrotaan käyttäjille, että taulukko on jo poistunut. Virheenkäsittelijän tarrassa on oltava kaksoispiste sen jälkeen, jotta VBA osoittaa, että se on tunniste.

1 virheenkäsittelijä:

Koodi hyppää sitten alas riville tarran alapuolelle ja palauttaa mukautetun viestiruudun.

Tästä on hyötyä, kun et halua, että käyttäjä voi napsauttaa Debug -näppäintä siirtyäksesi koodiin, koska Excel -vakioviesti antaa aina vaihtoehdon koodin virheenkorjaukseen.

Tarvitsemme myös Lopeta Sub menettelyssä. Jos on EI arkki nimeltä Sheet1, sitten kyseinen koodirivi suoritetaan ja nimeää aktiivisen taulukon uudelleen Sheet1: ksi. Haluamme sitten koodin päättyvän - emme halua, että se siirtyy virheenkäsittelijälle ja näyttää viestiruudun. Lopeta alirivi sulkee tämän jälkeen toimenpiteen ja pysäyttää koodin.

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave