VBA על שגיאה הולך 0 | כיצד להשתמש בשגיאה GoTo 0 ב- Excel VBA?

Excel VBA בשגיאה הולך 0

VBA On Error GoTo 0 הוא משפט מטפל בשגיאות המשמש להשבתת מטפל השגיאות המאופשר בהליך. זה מכונה "משבית מטפל בשגיאות".

טיפול בשגיאות באחת משפות התכנות הוא כיתת אמן שכל הקודנים צריכים להבין. גם שפת תכנות VBA, ויש לנו גם טכניקות לטיפול בשגיאות בשפת תכנות זו. "On Error Resume Next" מאפשר מטפל השגיאות ו- "On Error GoTo 0" ישבית את מטפל השגיאות המופעל.

הן "On Error Resume Next" והן "On Error GoTo 0" הם זוגות שיש להשתמש בהם במקביל ליעילות הקוד. כדי לטפל בשגיאות עלינו להתחיל בהצהרה "On Error Resume Next" ולסיום מטפל בשגיאות זה עלינו להשתמש בהצהרה "On Error GoTo 0".

כל קוד קו שנכתב בין הצהרות אלה יתעלם מכל סוג של שגיאה שהתרחשה בהליך.

כיצד להשתמש בהצהרת GoTo 0 בשגיאה?

אתה יכול להוריד את תבנית ה- VBA On Error Goto 0 Excel כאן - VBA on Error Goto 0 Excel Template

לדוגמא עיין בקוד שלהלן.

קוד:

 תת On_ErrorExample1 () גיליונות עבודה ("Sheet1"). בחר טווח ("A1"). ערך = 100 גיליונות עבודה ("Sheet2"). בחר טווח ("A1"). ערך = 100 Sub משנה 

מה שהקוד לעיל עושה הוא שהוא יבחר תחילה בגליון העבודה בשם "Sheet1" ובתא A1 הוא יכניס את הערך 100.

קוד:

גליונות עבודה ("גיליון 1"). בחר טווח ("A1"). ערך = 100

לאחר מכן הוא יבחר את גליון העבודה בשם "Sheet2" ויוסיף את אותו הערך.

קוד:

גליונות עבודה ("גיליון 2"). בחר טווח ("A1"). ערך = 100

עכשיו יש לי את הגיליונות הבאים בחוברת העבודה שלי.

אין גיליונות המכונים "Sheet1" ו- "Sheet2", כאשר אנו מריצים את הקוד הוא יתקל בשגיאה כמו להלן.

מכיוון שאין גיליון בשם "Sheet1" הוא נתקל בשגיאת "Subscribe מחוץ לטווח". כדי לטפל בשגיאה זו אוסיף משפט מטפל בשגיאות "On Error Resume Next" בחלקו העליון של המאקרו.

קוד:

 תת On_ErrorExample1 () בשגיאה המשך דפי העבודה הבאים ("גיליון 1"). בחר טווח ("A1"). ערך = 100 דפי עבודה ("גיליון 2"). בחר טווח ("A1"). ערך = 100 סוף משנה 

עכשיו הפעל את הקוד ותראה מה קורה.

זה לא ייתן שום הודעות שגיאה מכיוון שההצהרה של מטפל השגיאות ב- Resume Error Next מופעלת.

תארו לעצמכם את התרחיש בו עלינו להתעלם מהשגיאה במקרה של אי-זמינות של גליון העבודה "Sheet1" אך עלינו להודיע ​​אם אין גיליון עבודה בשם "Sheet2".

מאחר שהוספנו למעלה On Error Resume Next בחלק העליון, הוא התחיל לטפל בשגיאה אך יחד עם זאת, עלינו לציין כמה שורות עלינו להתעלם משגיאה זו.

בדוגמה זו, עלינו רק להתעלם מהשגיאה בגליון העבודה הראשון, אך לגיליון השני ואילך אנו צריכים שהשגיאה תתרחש אם אין גליון עבודה "Sheet2". אז לאחר שקוד גליון העבודה הראשון מוסיף את שורת השבתת השגיאה בשגיאה GoTo 0.

קוד:

 תת On_ErrorExample1 () בשגיאה המשך גיליונות העבודה הבאים ("גיליון 1"). בחר טווח ("A1"). ערך = 100 בשגיאה עבור אל 0 גיליונות עבודה ("Sheet2"). בחר טווח ("A1"). ערך = 100 משנה סוף 

כעת הפעל את הקוד שורה אחר שורה כדי לראות את ההשפעה על ידי לחיצה על מקש F8.

כעת אם תלחץ על מקש F8 פעם אחת ביצוע קוד יקפוץ לשורה הבאה ומשימה קו פעיל תבוצע. כעת הקו הפעיל (קו צהוב) הוא מטפל השגיאות "On Error Resume Next" ומטפל השגיאות יופעל.

Now any error occurs it will be ignored until it executes the error handler disables code “On Error GoTo 0” statement.

In the previous attempt, we have encountered errors but press the F8 key one more time and see the magic.

Without giving any kind of error it has resumed execution of the code even though there is not worksheet “Sheet2” to select. Now press F8 again.

Since there was no Sheet1 it cannot insert the value in the A1 cell as 500 but what it does is it will insert the value of 500 to cell A1 whichever worksheet is active. My active sheet when I am executing the code was “Sheet3”, so the value of 100 is inserted to the cell A1.

Now the active line of code is “On Error GoTo 0”, by pressing the F8 key this line task will be executed.

Since “On Error GoTo 0” is executed it has stopped the process of error handling and again starts to show errors if any occurs. Press the F8 key and see the error.

In the previous case without On Error GoTo 0, it has ignored this error as well, but since we have added error handler disabler it has started to show the error again.

Things to Remember here

  • Both On Error Resume Next and On Error GoTo 0 needs to be used as “Error Handler Enabler” and “Error Handler Disabler”.
  • Any line of codes between these two statements encounters an error it will be ignored.
  • If there is On Error GoTo 0 statement then after the exit of the subprocedure error handler will be disabled.