VBA la eroare

VBA On Error este o metodă ușoară pentru gestionarea excepțiilor neașteptate în Macros Excel. Se știe că nu putem scrie cod fără nicio eroare. Uneori, scrierea codului mare ne poate da eroarea chiar și în momentul compilării. Pentru a evita acest tip de situație, adăugăm mesajul de eroare care, în loc să ne dea răspunsul corect sau codul de eroare, ne va afișa mesajul cu codul de eroare. S-ar părea că am obținut rezultatul calculului nostru, dar codul de eroare va fi imprimat.

Cum se utilizează Excel VBA la declarația de eroare în Excel?

Există 3 moduri de eroare în VBA. Să înțelegem diferite moduri cu câteva exemple.

Exemplul # 1

Primul tip de eroare este eroarea de compilare a codului, care apare atunci când un cod este variabil nedeclarat sau imposibil. Pentru a înțelege mai multe, vom folosi o expresie matematică simplă a decalajului. Pentru aceasta, accesați meniul Insert din VBA și selectați modulul așa cum se arată mai jos.

Acum deschideți Subcategoria și adăugați orice nume. Pe măsură ce folosim On Error, am numit la fel.

 Sub OnError () End Sub 

Acum definiți orice 2 sau 3 întregi. Aici am luat X și Y ca numere întregi.

 Sub OnError () Dim X Ca Integer, Y Ca Integer, Z Ca Sub Complet Fin 

Acum, așa cum am discutat mai sus, vom calcula expresia matematică a diviziunii. Pentru X vom pune un număr în numărător și îl vom împărți 0. Și Y va fi 20/2 care este numere complete.

 Sub OnError () Dim X Ca număr întreg, Y Ca număr întreg X = Test / 0 Y = 20/2 End sub 

Acum rulați codul folosind tasta F5 sau făcând clic pe butonul de redare, așa cum se arată mai jos. Vom primi eroarea de execuție 6, care arată eroarea Text peste număr.

Acum pentru a anula această eroare, vom adăuga o linie On Error Resume Next Înainte de a scrie codul matematic. Va sări codul de eroare, dar nu vom putea vedea rezultatul celui de-al doilea cod matematic. Acest lucru ascunde mesajul de eroare numai dacă există mai multe linii de coduri, așa cum se arată mai jos. Încercați să rulați și codul.

 Sub OnError () Dim X Ca Integer, Y Ca Integer On Error Reia Următorul X = Test / 0 Y = 20/2 MsgBox X MsgBox Y Sub Sub 

Acum pentru a anula această eroare, vom adăuga o linie On Error Resume Next Înainte de a scrie codul matematic. Va sări codul de eroare, dar nu vom putea vedea rezultatul celui de-al doilea cod matematic. Acest lucru ascunde mesajul de eroare numai dacă există mai multe linii de coduri, așa cum se arată mai jos. Încercați să rulați și codul.

Exemplul # 2

În acest exemplu, vom considera că diviziunea matematică care dă un rezultat infinit, dar în codificare, va rezulta # DIV / 0. Pentru a demonstra acest lucru, vom lua în considerare încă un număr întreg Z împreună cu X și Y în subcategorie, așa cum se arată mai jos.

 Sub OnError () Dim X Ca Integer, Y Ca Integer, Z Ca Sub Complet Fin 

Acum încadrați toate numerele întregi X, Y și Z cu o expresie matematică a împărțirii și pentru a o imprima folosind funcția MsgBox în VBA a rezultatului fiecărui număr întreg.

Mai jos pentru Integer X am împărțit 10 la 0, 20 la 2 și 30 la 4.

 Sub OnError () Dim X Ca Integer, Y Ca Integer, Z Ca Integer X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Acum rulați codul folosind tasta F5 sau manual, așa cum se arată mai jos.

Așa cum putem vedea în ecranul de mai sus eroare 11 timp de execuție, ceea ce înseamnă că eroarea este legată de număr. Acum, pentru a depăși această completare, adăugați o linie On Reîncepeți eroarea Înainte de expresia matematică, așa cum se arată mai jos.

 Sub OnError () Dim X Ca Integer, Y Ca Integer, Z Ca Integer On Error Reia Următorul X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Acum, dacă rulăm codul, vom primi zero pentru primul număr întreg X și pentru Y și Z vom primi răspunsuri de diviziune respective, așa cum se arată mai jos.

Exemplul # 3

Al doilea tip de eroare este văzut atunci când introducem date incorecte în cod. Pentru aceasta, vom lua în considerare 3 numere întregi X, Y și Z prin deschiderea Subcategoriei în VBA așa cum se arată mai jos.

 Sub OnError () Dim X Ca Integer, Y Ca Integer, Z Ca Sub Complet Fin 

Acum, de asemenea, ia în considerare aceeași diviziune matematică pe care am văzut în exemplul de mai sus.

 Sub OnError () Dim X Ca Integer, Y Ca Integer, Z Ca Integer X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Dacă rulăm codul, vom primi același mesaj de eroare cu eroarea 11 de executare.

Acum pentru a trece peste această eroare, utilizați textul On Error GoTo cu cuvântul „„ Rezultat pentru a omite mesajul de eroare și obțineți ieșirea care funcționează bine așa cum se arată mai jos.

 Sub OnError () Dim X Ca Integer, Y Ca Integer, Z Ca Integer On Error GoTo ZResult: X = 10/0 Y = 20/2 ZResult: Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Acum rulați din nou codul. Vom obține același rezultat ca și exemplul precedent.

Pe eroarea GoTo ZResult ne ajută să sărăm direct din numarul întreg al punctului de rezultat menționat, așa cum am făcut-o pentru Z.

Exemplul # 4

În al treilea tip de eroare atunci când rulăm codul și VBA nu este capabil să înțeleagă linia de cod. Acest lucru se poate face cu ajutorul codului On Error Resume Next împreună cu MsgBox Err.Number . Luați în considerare aceleași date utilizate în exemplele de mai sus. Vom vedea din nou aceleași 3 numere întregi X, Y și Z așa cum se arată mai jos.

 Sub OnError () Dim X Ca Integer, Y Ca Integer, Z Ca Sub Complet Fin 

Și pentru tipărirea rezultatului, permiteți ca ieșire casetele de mesaje pentru toți numerele întregi.

 Sub OnError () Dim X Ca Integer, Y Ca Integer, Z Ca Integer X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Acum, dacă rulăm codul complet, atunci vom primi un mesaj de eroare de eroare matematică Eroare de timp de execuție 11.

Acum pentru a anula această eroare, vom folosi On Error Resume Next.

 Sub OnError () Dim X Ca Integer, Y Ca Integer, Z Ca Integer On Error Reia Următorul X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Și executați codul. Acest lucru va da rezultatul utilizării pe linia matematică valabilă, așa cum se arată mai jos.

Acum adăugați în continuare linia de cod ZResult înainte de expresia matematică a diviziunii întregi Z și adăugați linia de cod MsgBox Err.Număr la sfârșitul codului, așa cum se arată mai jos.

 Sub OnError () Dim X Ca Integer, Y Ca Integer, Z Ca Integer On Error Reia Următorul X = 10/0 Y = 20/2 ZResult: Z = 30/4 MsgBox X MsgBox Y MsgBox Z MsgBox Err.Number End Sub 

Acum rulați codul folosind tasta F5 sau apăsând butonul de redare, așa cum se arată mai jos.

După cum putem vedea în capturile de ecran de mai sus. Prima casetă de mesaje are 0 care anulează expresia matematică incorectă. 2 și 3 au un rezultat al diviziunii întregi Y și Z. Iar ultima casetă de mesaje a executat codul de eroare 11, care este probabil codul de eroare al expresiilor de diviziune a numărului X.

Beneficiile VBA la eroare

  • Putem calcula orice formulă matematică chiar dacă este incorectă.
  • Pentru structuri de codificare mai mari, unde există șanse sau au o eroare, utilizarea acestor metode poate da un rezultat corect chiar și în rândul codurilor.
  • Acest lucru oferă un rezultat mai bun în comparație cu rezultatul obținut din calcule normale Excel.

Lucruri de amintit

  • Salvați întotdeauna fișierul în fișierul Excel Macro-Enabled, astfel încât să putem utiliza codul VBA creat de mai multe ori.
  • Compilați întotdeauna codul scris înainte de a implementa cu orice cerință excel.
  • Dacă este nevoie, alocați codul scris oricărui buton, astfel încât să putem face clic rapid pe buton și să executăm codul.

Puteți descărca aici șablonul Excel VBA On Error - Modelul VBA On Error Excel

Articole recomandate

Acesta a fost un ghid pentru Excel VBA On Error. Aici am discutat despre cum să folosiți VBA On Declaration Error, împreună cu câteva exemple practice și șablonul excel descărcabil. Puteți parcurge și alte articole propuse -

  1. Cum se utilizează funcția VBA TRIM?
  2. Formatul numărului în VBA
  3. Ghid pentru Excel VBA Faceți în Buclă
  4. Cum se utilizează funcția Căutare VBA?

Categorie: