בניגוד לרוב הפונקציות שמחזירות תוצאה אחת בלבד, פונקציות התנאי מאפשרות להחזיר תוצאות שונות,
בהתאם לנתונים המתקבלים תוך כדי ריצת הקוד.
כלומר, הפונקציה בודקת את התנאים, ועל פי הקריטריונים שקבענו מחליטה איזו תוצאה להחזיר.
ישנם שני סוגים עיקריים של פונקציות מסוג זה, האחד – הפונקציה 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