הפונקציה 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