Go To
מקרה נוסף ונפוץ מאוד של שינוי בריצה ברצף ישר של פקודות הוא היכולת לקפוץ ישירות לשלבים נבחרים ברצף. למשל, דילוג על מספר פקודות ולקפוץ קדימה, חזרה לשלב קודם ועוד. הפקודה המעבירה את ריצת הקוד לשלב מוגדר היא GoTo. יש לתייג את השלב בקוד בשם, על מנת שהפקודה GoTo תפנה אליו.
לתיוג שלב רצוי בקוד יש לכתוב שם רצוי ואחריו נקודתיים. למשל, Stage1: או ConditionLocation:.
השימוש בפקודה זו מתאים ונפוץ יותר כאשר מתבצעת בדיקה של תנאים, כמו בתנאי IF והתוצאה של התנאי תקפיץ את הרצף לקטע אחר בקוד.
בדוגמה הבאה ניתן לראות טבלת נבחנים והציונים שלהם:
מטרת הקוד הבא היא לצבוע באדום את הטבלה אם 40% ויותר מהנבחנים קיבלו פחות מ-60 בבחינה (כלומר, נכשלו). אם פחות מ-40% מהנבחנים קיבלו 60, כלומר תוצאת התנאי הראשי היא False, אז תתבצע בדיקה של תנאי נוסף – האם ממוצע הציונים של כל הנבחנים קטן מ-70. אם התשובה היא True אז הטבלה תצבע בצהוב. אם התשובה היא False, כלומר, אם ממוצע הציונים הכולל גדול מ-70 כי פחות מ-40% מהתלמידים קיבלו ציון נמוך מ-60, לא יחול שום שינוי בטבלה:
GradesCount – משתנה שמוכנס לתוכו מספר הנבחנים בקורס. החישוב מתבצע באמצעות הפונקציה Count() ממאגר הפונקציות שבתוכנה.
- PassCount– משתנה שמוכנס לתוכו מספר הנבחנים שעברו את הציון 60. החישוב מתבצע באמצעות הפונקציה CountIf() ממאגר הפונקציות שבתוכנה.
- GradesAverage – משתנה שמוכנס לתוכו ממוצע הציונים בקורס. החישוב מתבצע באמצעות הפונקציה Average() ממאגר הפונקציות שבתוכנה.
- כדי לבדוק אם מספר הנבחנים שעברו את הציון 60 (PassCount) הוא גדול מ-40% מתוך כלל הנבחנים (GradesCount), מופיע תנאי If במבנה ללא Else. אם התנאי מתקיים צבע הרקע של כל התאים בטבלה יהיה אדום.ניתן לראות את תת האובייקט CurrentRegion שמסמן את כל התאים הסמוכים לטווח נתון, ובמקרה הנוכחי תא 1A. CurrentRegion שקול לפקודה המתקבלת בצירוף המקשים Ctrl + A בתוכנה, לאחר בחירת תא או טווח.
- בתא שנמצא שני תאים מתחת לתא האחרון בטבלה יוזן הביטוי Course Average.
תוצאת הרצת הקוד על הטבלה הנתונה בדוגמה:
הדוגמה הבאה מרחיבה את הקוד ומתווספת בדיקה מקדימה, לפיה אם ממוצע הציונים גדול מ-73, ניתן לדלג על הבדיקה של ה-IF המקונן והתוצאות הצבעוניות שיחולו על הטבלה, ישירות לשלבים האחרונים של הקוד:
ניתן לראות את התגית Summary: לפני שתי הפקודות האחרונות של הקוד, ואת ההפניה אליה בתנאי If הראשון לאחר הפקודה GoTo.
חשוב לשים לב! קוד יעיל יותר יחסוך ריצה מיותרת על שורות, שעלולות להיות לא הכרחיות. לפיכך הדוגמה הבאה מציגה כתיבה יעילה יותר:
אין צורך בחישובים, הכוללים ייבוא פונקציות מהתוכנה ואחסונם בתוך משתנים, אם הבדיקה הראשונית תוביל לדילוג על בדיקת התנאי שמשתמשת בהם. לכן שורות החישוב והאחסון של המשתנים GradesCount ו-PassCount עברו לשלב של אחרי הבדיקה ויופעלו רק אם לא תתבצע קפיצה לתגית Summary שבסוף הקוד.
בדוגמה הבאה ניתן לראות כיצד Goto יכול לקפוץ גם לתיוגים בשלבים קודמים בקוד:
תוצאת הרצת הקוד תהיה: