בניגוד לרוב הפונקציות שמחזירות תוצאה אחת בלבד, פונקציות התנאי מאפשרות להחזיר תוצאות שונות,
בהתאם לנתונים המתקבלים תוך כדי ריצת הקוד.
כלומר, הפונקציה בודקת את התנאים, ועל פי הקריטריונים שקבענו מחליטה איזו תוצאה להחזיר.
ישנם שני סוגים עיקריים של פונקציות מסוג זה, האחד – הפונקציה IF והשני – Select Case
במאמר זה אתמקד בפונקציה IF. על הפונקציה Select Case תוכלו לקרוא כאן.
הלוגיקה הבסיסית של הפונקציה ב VBA דומה ללוגיקה של פונקצית הגיליון,
והיא אומרת מה לעשות במקרה שבו הביטוי התקיים, כלומר – קיבל ערך אמת (TRUE)
ומה לעשות במקרה שהביטוי לא התקיים, כלומר – קיבל ערך שקר (False).
את הפונקציה כותבים במבנה הבא:
If condition Then Do something Else Do something else End i f
אז מהם התנאים (Conditions)?
אלו הם ביטויים שתוצאתם אמת או שקר, לדוגמה –
הערך שבתא A1 גדול מהערך שבתא A2 הוא ביטוי שתוצאתו יכולה להיות אמת,
אם הערך שבתא A1 אכן גדול מהערך שבתא A2, או שקר, אם הערך בתא A1 קטן או שווה לערך שבתא A2.
האופרטורים שמשמשים להשוואה הם לרוב:
שווה (=), גדול מ (<), קטן מ (>), שונה (<>), גדול או שווה ל (=<) וקטן או שווה ל (=>).
ואפשר להשתמש גם ב AND, OR, NOT ליצירת ביטוי מורכב יותר.
האופרטורים שלעיל יכולים לחול על תאים מספריים או על טקסטים.
דוגמה לפונקצית תנאי שפועלת על מספרים:
If Range("a1") > Range("a2") Then Range("a2") = Range("a2") * 2 Else Range("a1") = Range("a1") * 2 End If
דוגמה לפונקצית תנאי שפועלת על טקסטים:
If Range("a1") = "Maayan" Then MsgBox "Hello Maayan" Else MsgBox "Hello " & Application.UserName End If
ב VBA, בניגוד לאקסל, ניתן לכתוב פונקצית תנאי שתבדוק רק את ערך האמת (True),
בלי לכתוב את צד ה"שקר" במשוואה. במקרה זה, אם הביטוי יקבל ערך אמת, יבוצעו הפקודות שבתוך התנאי,
ואם יקבל ערך שקר, הן לא יבוצעו, לדוגמה –
If Range("a1") > Range("a2") Then Range("a2") = Range("a2") * 2 End If
כאשר קיימים יותר מאשר שני תנאים, ניתן להשתמש ב ElseIf
לדוגמה:
If Range("a1") > Range("a2") Then Range("a2") = Range("a2") * 8 ElseIf Range("a1") = Range("a2") Then Range("a2") = Range("a2") * 4 Else Range("a2") = Range("a2") * 2 End If