VBA ignorēt kļūdu

Šī apmācība parādīs, kā nodrošināt, lai VBA ignorētu kļūdu, palaižot jūsu kodu.

Dažreiz, veidojot VBA kodu, jūs patiešām vēlaties, lai VBA kļūdas gadījumā ignorētu koda rindiņu. Tas patiesībā var būt ļoti noderīgi, ja, piemēram, vēlaties izdzēst lapu, ja tā pastāv, bet ignorējiet šo koda rindiņu, ja lapas nav.

(Plašāku informāciju par VBA kļūdām skatiet mūsu kļūdu apstrādes rokasgrāmatā)

Par kļūdu Atsākt nākamo

Lai procedūrā ignorētu koda rindu, mēs izmantojam Par kļūdu Atsākt nākamo paziņojums, apgalvojums.

123456 ApakštestsErrorIgnore ()Par kļūdu Atsākt nākamoActiveWorkbook.Sheets ("Sheet4"). AtlasietActiveSheet. Dzēst'vairāk kodu šeitBeigu apakš

Iepriekš minētajā piemērā an Par kļūdu Atsākt nākamo paziņojums ir ievietots procedūras augšgalā. Pēc tam kods tiek izveidots, lai atlasītu lapu 4 un pēc tam to izdzēstu.

Tomēr sakarā ar Par kļūdu Atsākt nākamo paziņojums, ja kods neatrod lapu 4, tas vienkārši pāriet uz nākamo rindu un izdzēš jebkuru aktīvo lapu, kuru tā atrod.

Tas var būt diezgan bīstami, ja vēlaties dzēst tikai 4. lapu, nevis tikai lapu. Lai novērstu šo kļūdu, mēs varam iestatīt mainīgo uz 4. lapu un izdzēst tikai to lapu, ja tā pastāv.

1234567 Sub TestErrorIgnore ()Dim ws kā darblapaPar kļūdu Atsākt nākamoIestatiet ws = ActiveWorkbook.Sheets ("Sheet4")ws. Dzēst'vairāk kodu šeitBeigu apakš

Tagad, kad kods tiek palaists, tiks izdzēsta tikai lapa 4 IF Sheet4 faktiski pastāv. Ja 4. lapa neeksistē, VBA ignorēs kļūdu un turpinās.

Vēl viens piemērs tam ir, ja vēlaties izdzēst visas lapas no darbgrāmatas, izmantojot cilpu. Tā kā Excel darbgrāmatā jābūt vismaz vienai lapai, kods izdzēsīs visas lapas, izņemot vienu.

123456 Sub DeleteSheets ()Dim ws kā darblapaPar katru ws ActiveWorkbook.Sheetsws. DzēstNākamais wsBeigu apakš

Iepriekš minētais kods tiks pārtraukts ar kļūdu.

Noklikšķinot Atkļūdot mūs ievadīs kodā ar iezīmēto pārkāpuma līniju!

Tomēr, pievienojot Par kļūdu Atsākt nākamo rindiņa uz kodu novērsīs kļūdu, un rutīna vienmēr atstās vienu lapu darbgrāmatā.

12345678 Sub DeleteSheets ()"šeit pievienojiet kļūdas rinduPar kļūdu Atsākt nākamoDim ws kā darblapaPar katru ws ActiveWorkbook.Sheetsws. DzēstNākamais wsBeigu apakš

Kļūda GoTo 0

Bieži vien, ja lietojat Par kļūdu Atsākt nākamo lai ignorētu kļūdu, vēlaties, lai koda kļūdas tiktu uztvertas vēlāk, vai arī vēlaties, lai koda darbība tiktu pārtraukta, ja nākotnē rodas kļūda. Mēs varam no jauna iestatīt kļūdu apstrādi, lai kods atkal pārtrauktu kļūdas, pievienojot rindu On Error GoTo 0.

12345678 Sub TestErrorIgnore ()Dim ws kā darblapaPar kļūdu Atsākt nākamoIestatiet ws = ActiveWorkbook.Sheets ("Sheet4")ws. DzēstKļūda GoTo 0'vairāk kodu šeitBeigu apakš

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

wave wave wave wave wave