VBA par kļūdu Atsākt vai doties uz 0

Šī apmācība izskaidros VBA par kļūdu atsākšanu un Goto paziņojumu.

Pat ja jūsu kods ir perfekti uzbūvēts, lietotājs var nedarīt tā, kā jūs gaidījāt. Šī iemesla dēļ jums ir jāievieto kļūdu apstrādātāji savā kodā ikreiz, kad var būt iemesls, ka var rasties kļūda.

Par kļūdu Atsākt nākamo

Paziņojums par kļūdu atsākt nākamo liek VBA izlaist visas koda rindas, kurās ir kļūdas, un pāriet uz nākamo rindu. VBA ignorēs rindu vai rindas ar kļūdu un pāries uz nākamo koda rindu.

Tas ir noderīgi, ja koda rindiņa, kuru var ignorēt, nav izšķiroša makro veiksmīgai darbībai, bet var būt diezgan bīstama, ja to lieto nepareizi, jo tā var dot netīšus rezultātus.

Piemēram, veicot tālāk norādīto procedūru.

123456 Sub HideAllSheets ()Dim ws kā darblapaPar katru ws ActiveWorkbook.Sheetsws.Visible = NepareiziNākamais wsBeigu apakš

Palaižot šo kodu, mēs saņemsim kļūdu, jo nevaram paslēpt visas darbgrāmatas darblapas - vismaz vienai darbgrāmatai ir jābūt redzamai.

Tomēr, ja mēs mainām procedūru, kā parādīts zemāk, kods turpinās darboties pēc kļūdas un atstās redzamu pēdējo darbgrāmatas lapu.

1234567 Sub HideAllSheets ()Par kļūdu Atsākt nākamoDim ws kā darblapaPar katru ws ActiveWorkbook.Sheetsws.Visible = NepareiziNākamais wsBeigu apakš

Kļūda GoTo 0

Ja mūsu kodā nav kļūdu apstrādātāja, Kļūda Goto 0 ir Excel noklusējuma iestatījums. Tas būtībā nozīmē to, ja rodas kļūda ar Kļūda GoTo 0, VBA pārtrauks koda izpildi un parādīs standarta kļūdas ziņojumu lodziņu, piemēram:

Ja mēs esam ievietojuši kļūdu slazdu, piemēram Par kļūdu Atsākt nākamo mūsu kodā, bet tad mēs vēlamies atkārtoti iestatīt kļūdu uz noklusējumu, mēs varam ievietot Kļūda Goto 0 ievadiet mūsu kodu.

12345678910 Apakš kļūdaGoTo0 ()Par kļūdu Atsākt nākamoDim ws kā darblapaPar katru ws ActiveWorkbook.Sheetsws.Visible = NepareiziNākamais wsKļūda GoTo 0“Palaidiet vairāk kodu šeit, piemēram:ActiveSheet.Name = "Lapa1"Beigu apakš

Tagad, ja mūsu kodā pēc kļūdas bija kāda kļūda Kļūda Goto 0 līnijaparādīsies noklusējuma kļūdas ziņojums programmai Excel. Šajā piemērā mums jau ir lapa ar nosaukumu Sheet1 ActiveWorkbook kā kods virs Kļūda Goto 0 slēpj lapu, bet neizdzēš. Pēc tam tiks parādīts noklusējuma Excel kļūdas ziņojums, kas norāda, ka lapas nosaukums jau ir uzņemts.

Par kļūdu, dodoties uz Līnija

Mēs varam arī piespiest savu kodu pāriet uz citu koda rindu, izmantojot Par kļūdu Goto Līnija kas liek VBA pāriet uz noteiktu koda rindu, ja rodas kļūda.

123456789101112 Apakš kļūdaGoToLine ()Par kļūdu Atsākt nākamoDim ws kā darblapaPar katru ws ActiveWorkbook.Sheetsws.Visible = NepareiziNākamais wsPar kļūdu GoTo errhandlerActiveSheet.Name = "Lapa1"Iziet no apakšnodaļaskļūdu apstrādātājs:MsgBox ("Jau ir lapa, ko sauc par lapu1!", VbCritical)Beigu apakš

Iepriekš minētajā piemērā, kad kods atrod lapu “Sheet1”, tas tiek pārvietots uz koda rindu zem kļūdu apstrādātāja etiķetes - šajā gadījumā tiek izsaukts pielāgots ziņojumu lodziņš, informējot lietotājus, ka lapa jau iziet. Kļūdu apstrādātāja etiķetei ir jābūt ar kolu, lai parādītu VBA, ka tā ir etiķete.

1 kļūdu apstrādātājs:

Pēc tam kods pāriet uz rindu zem etiķetes un atgriež pielāgoto ziņojumu lodziņu.

Tas ir noderīgi, ja nevēlaties, lai jūsu lietotājs varētu noklikšķināt uz atkļūdošanas, lai ievadītu jūsu kodu, jo standarta Excel ziņojums vienmēr dod iespēju atkļūdot kodu.

Mums ir vajadzīgs arī Iziet no apakšnodaļas procedūrā. Ja tur ir lapu ar nosaukumu Sheet1, tad šī koda rinda tiktu palaista un aktīvo lapu pārdēvētu par Sheet1. Pēc tam mēs vēlamies, lai kods beigtos - mēs nevēlamies, lai tas tiktu nodots kļūdu apstrādātājam un parādītu ziņojumu lodziņu. Pēc tam rindiņa Exit Sub iziet no procedūras un pārtrauc kodu.

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave