הפונקציה Select Case, בדומה לפונקציה IF, היא פונקציה לוגית.
היא יעילה במיוחד במצבים שבהם יש תנאים מרובים, ומונעת כתיבת פונקצית IF מקוננת ומסובכת.
התחביר של הפונקציה הוא:
Select Case TestExpression
Case condition_1
Result_1
Case condition_2
Result_2
Case condition_3
Result_3
Case condition_n
Result_n
Case Else
Result_Else
End Select
TestExpression:
הביטוי הנבדק.
הביטוי יכול להיות ערך מספרי או מחרוזת והוא נבדק עבור כל מקרה (case) על פי סדר הכתיבה (מלמעלה למטה)
Conditions:
התנאי הנבדק. זהו ביטוי חשבוני, שתוצאתו יכולה להיות אמת או שקר (תוכלו לקרוא על כך בפירוט במאמר על IF)
Results:
כאן נוכל לכתוב קטע קוד שיורה לעורך איזו פקודה לבצע, בעת שהביטוי מקבל ערך TRUE.
אם הביטוי והתנאי תואמים, מוחזרת התוצאה הרלוונטית.
אם אף אחד מהתנאים לא תואם, תוצג התוצאה שכתובה ב Case Else (אם הוגדרה)
בואו נבחן מספר דוגמאות
הקוד הבא בוחן את שמו של איש המכירות (כלומר – בדיקה של מחרוזת טקסט) ומשייך אליו את מספר העובד.
Select Case SalesPerson Case “Yael” SalesPersonId = 121 Case “Libby” SalesPersonId = 122 Case “Mai” SalesPersonId = 123 Case “Roy” SalesPersonId = 124 Case “Amit” SalesPersonId = 125 End Select
ודוגמה נוספת:
הקוד הבא בודק את סכום המכירה, מקובץ לטווחים, ועל פי הערך המתקבל קבוע את אחוז ההנחה.
בקוד הזה, לדוגמה, נבחנים מספרים, והמעניין הוא שהפונקציה יודעת לבדוק גם טווחים ולא רק ערכים בודדים!
Select Case EmployeeId Case 1 to 199 Disc= 0 Case 200 to 499 Disc= 0.05 Case 500 to 1000 Disc= 0.07 Case 1001 to 1500 Disc= 0.09 Case Else Disc= 0.1 End Select
ועוד דוגמה:
Select Case Team_Id Case 11, 12 Manager_Id = M11 Case 13, 16, 17 Manager_Id = M12 Case 14, 15 Manager_Id = M13 End Select
בדוגמה שלעיל Team_ID הוא הביטוי הנבדק.
אם הוא תואם לאחד מהערכים המופיעים ברשימה, אזי יוחזר ה Manager_ID התואם.
וזה אפילו הולך ונעשה יותר טוב. ראו מה עוד מאפשר Select Case
Select Case Score Case Is <= 33 MyResult = “Poor” Case Is <= 75 MyResult = “Average” Case Else MyResult = “Distinction” End Select
בדוגמה שלעיל Score הוא הביטוי הנבדק.
אם התוצאה נופלת באחד הטווחים המצוינים, יוגדר המשתנה MyResult בהתאם.
ולסיום, אפשר גם לשלב תנאים, כפי שתראו בדוגמה הבאה:
Select Case Range (“A5”).Value Case 100 to 200, 202, 205 to 399 MyColor = “Orange” Case Else MyColor = “Brown” End Select