התקשרו אלינו: 052-2928949
ימים א'-ה' בין השעות 9:00-17:00

התקשרו אלינו: 052-2928949 א-ה 9:00-17:00

פונקצית IF ב VBA

VBA Tip

פונקצית IF ב VBA

VBA Tip

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

דילוג לתוכן