תת יציאת VBA | צא מתהליך VBA אם התנאים לא מתקיימים

נוהל משנה של יציאת Excel VBA

משפט Exit Sub יוצא מתהליך המשנה מוקדם יותר מהשורות המוגדרות של קודי VBA. עם זאת, כדי לצאת מתהליך המשנה עלינו להחיל איזושהי בדיקה הגיונית.

בואו נבנה את זה במילים פשוטות.

 Sub MacroName () '...' קוד כלשהו כאן '... צא משנה' צא מהסאב בלי לבצע שורות קוד נוספות למטה '...' קוד זה יתעלם '... סוף משנה 

דוגמאות

ניתן להוריד תבנית VBA ליציאת משנה זו ל- VBA כאן - תבנית VBA ליציאת משנה ל- Excel

דוגמה מס '1

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

קוד:

 תת יציאה_דוגמה 1 () התעמעם k כל עוד k = 1 עד 10 תאים (k, 1). ערך = k הבא k סוף משנה 

הקוד שלעיל יוסיף מספרים סידוריים מ -1 עד 10 בתאים A1 עד A10.

עכשיו אני רוצה להכניס רק 5 מספרים סידוריים וברגע שערך המשתנה "k" יהפוך ל 6 אני רוצה לצאת מהמשנה.

לשם כך, אצטרך להוסיף את המבחן הלוגי ב- Excel כ- IF k = 6 ואז צא מ- Sub .

קוד:

 Sub Exit_Example1 () עמום k כל עוד עבור k = 1 עד 10 אם k = 6 ואז צא משנה 'ברגע שערך k הופך ל 6 הוא יתעלם מכל הקודים ויצא מתאים (k, 1). ערך = k הבא k סוף תַת 

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

נכון לעכשיו, ערך k הוא אפס.

כדי לשנות את ערך k ל- 1 הקש פעם נוספת על מקש F8.

אז ערך k הוא 1 הקוד שלנו ממשיך לפעול ויכניס 1 לתא A1. ככה המשיכו להריץ את הלולאה עד שהערך של k הופך ל -6.

כעת הערך של k הוא 6 ושורת הקוד עומדת לבצע את הבדיקה הלוגית שלנו כדי לצאת מתהליך המשנה. אם אני לוחץ על מקש F8 פעם נוספת הוא ייצא מכל הליך המשנה בלבד.

כפי שאנו רואים זה הדגיש את המילה "יציאה משנה" . בלחיצה על מקש F8 הוא ייצא מתהליך המשנה מבלי לעבור למילה "סוף משנה" .

דוגמה מס '2 - בעת שגיאה צא מתהליך המשנה

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

להלן הקוד לקבלת החלוקה של שני מספרים.

קוד:

 תת-יציאה_דוגמה 2 () התעמעם k כל עוד עבור k = 2 עד 9 תאים (k, 3). ערך = תאים (k, 1). ערך / תאים (k, 2). ערך הבא k סוף משנה 

כידוע איננו יכולים לחלק אף מספר באפס. אז אם ננסה לעשות זאת נקבל את השגיאה כשגיאת זמן ריצה '11': חלוקה לפי אפס.

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

קוד:

 תת יציאה_דוגמא 2 () התעמעם k כל עוד עבור k = 2 עד 9 בשגיאה עבור אל שגיאת תקלות (k, 3). ערך = תאים (k, 1). ערך / תאים (k, 2). סיום משנה 

בדוגמה שלעיל הזכרתי את ההצהרה "On Error Goto ErrorHandler". כאן המילה ErrorHandler היא התווית שהקצתי. אם אתה יכול לראות בתחתית הקוד הזכרתי את התווית כ-

ErrorHandler: צא משנה 

כך שברגע שהקוד נתקל בשגיאה הוא ידחוף את הקוד כדי לקפוץ לתווית ולתווית יש את המשפט "יציאה משנה", כך ייצא מתהליך המשנה.

עכשיו אני אפעיל את הקוד, זה יחשב את החלוקה עד שימצא שגיאה.

כפי שניתן לראות בתא C7 הוא נתקל בשגיאה בשם "חלוקה לפי אפס" ולכן הוא יוצא מתהליך המשנה. מבלי ליידע את המשתמש ביציאה מתת הליך זה תמיד דבר מסוכן. כדי להודיע ​​למשתמש על השגיאה נוכל לכלול תיבת הודעה קטנה אחת.

קוד:

 תת יציאה_דוגמא 2 () התעמעם k כל זמן עבור k = 2 עד 9 בשגיאה עבור אל שגיאת שגיאות (k, 3). ערך = תאים (k, 1). ערך / תאים (k, 2). ערך הבא k ErrorHandler: MsgBox " אירעה שגיאה והשגיאה היא: "& vbNewLine & Err.Description Exit Sub End Sub 

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

זוהי דרך אמינה יותר ליציאה מהנוהל משנה.