MICROSOFT LOGO
MICROSOFT LOGO
קורס אקסל VBA

קורס אקסל VBA – תנאי If

carmel website
carmel-website
carmel-website
עד כה התייחסנו ליצירת קוד, הפועל בתזרים ישר פקודה אחר פקודה. אך תרשים הזרימה של האלגוריתם יכול לכלול פיצולים של הרצף לפי בדיקות ותנאים

למשל, אם תנאי מסוים מתקיים ימשיך רצף פקודות אחד, אחרת ימשיך רצף פקודות שני. אחת מהפקודות המהוות תנאי ושינוי ברצף הפקודות היא If.

תנאי If היא שורת קוד המבצעת בדיקה מוגדרת. הבדיקה יכולה להחזיר את התוצאות True (התנאי מתקיים) או False (התנאי לא מתקיים) בלבד. למשל, האם ערך בתא מסוים גדול מ-90, לטובת בדיקת ציוני תלמידים, או האם שם המשתמש הוא David, לטובת בדיקת המשתמש שמפעיל את הקובץ.

מבנה If

מבנה הפקודה הוא סגור, כך שיכולות להיות פקודות לפני מבנה ה-If ואחריו. כלומר, במהלך הקוד ניתן לפתוח בדיקת תנאי שיגרום לרצף פקודות מתאים לאמת (התקיימות התנאי) או לרצף פקודות מתאים לשקר (אי-התקיימות התנאי), ועם סיום רצף הפקודות של התנאי, ניתן להמשיך עם רצף הפקודות המאוחד של הקוד.

להלן מבנה If:

אין חובה להגדיר רצף פקודות במקרה של False. במקרה זה, אין להגדיר Else ורצף פקודות שאחריו. לדוגמה:

הצורך בהגדרת End IF קיים רק אם אחרי Then או Else קיים בלוק של פקודות. אם מוגדרת רק פקודה אחת לביצוע מיד אחרי  Thenבהמשך אותה השורה, אין לציין End If. אם הפקודה האחת לביצוע כתובה בשורה מתחת לשורת ה-Then (או מספר פקודות) אז חובה לציין End If. לדוגמה:

בדוגמה הבאה ניתן לראות טבלת נבחנים והציונים שלהם:

מטרת הקוד הבא היא לצבוע באדום את הטבלה אם 40% ויותר מהנבחנים קיבלו פחות מ-60 בבחינה (כלומר, נכשלו):

GradesCount – משתנה שמוכנס לתוכו מספר הנבחנים בקורס. החישוב מתבצע באמצעות הפונקציה Count() ממאגר הפונקציות שבתוכנה.

  1. PassCount– משתנה שמוכנס לתוכו מספר הנבחנים שעברו את הציון 60. החישוב מתבצע באמצעות הפונקציה CountIf() ממאגר הפונקציות שבתוכנה.
  2. כדי לבדוק אם מספר הנבחנים שעברו את הציון 60 (PassCount) הוא גדול מ-40% מתוך כלל הנבחנים (GradesCount), מופיע תנאי If במבנה ללא Else. אם התנאי מתקיים צבע הרקע של כל התאים בטבלה יהיה אדום.ניתן לראות את תת האובייקט CurrentRegion שמסמן את כל התאים המצויים בטווח נתון, ובמקרה הנוכחי תא 1A. CurrentRegion שקול לפקודה המתקבלת בצירוף המקשים Ctrl + A בתוכנה, לאחר בחירת תא או טווח.
  3. בתא שנמצא שני תאים מתחת לתא האחרון בטבלה יוזן הביטוי Course Average.
  4. בתא שנמצא שלושה תאים מתחת לתא האחרון בטבלה יוזן הממוצע של ציוני הסטודנטים. החישוב מתבצע באמצעות הפונקציה Average() ממאגר הפונקציות שבתוכנה.

תוצאת הרצת הקוד על הטבלה הנתונה בדוגמה:

תנאי מקונן ו-ElseIf

כדי להוסיף בדיקה של תנאי נוסף, למקרה שתוצאת התנאי הראשי היא False, יש להחליף את הביטוי Else בביטוי ElseIf. ביטוי זה מתפקד כמבנה If פנימי (כלומר, בתוך מבנה ה-If הראשי), ובהתאם הוא מכיל את הביטויים Then, Else ו-End If (End If פנימי נדרש רק במקרה שלאחר התנאי ישנו רצף של יותר מפקודה אחת).

הדוגמה הבאה מרחיבה את התנאי שבדוגמה הקודמת: אם פחות מ-40% מהנבחנים קיבלו 60, כלומר תוצאת התנאי הראשי היא False, אז תתבצע בדיקה של תנאי נוסף – האם ממוצע הציונים של כל הנבחנים קטן מ-70. אם התשובה היא True אז הטבלה תצבע בצהוב. אם התשובה היא False, כלומר, אם ממוצע הציונים הכולל גדול מ-70 ופחות מ-40% מהתלמידים קיבלו פחות מ-60, לא יחול שום שינוי בטבלה.

GradesAverage – משתנה שמוכנס לתוכו ממוצע הציונים בקורס. החישוב מתבצע באמצעות הפונקציה Average() ממאגר הפונקציות שבתוכנה.

תוצאת הרצת הקוד על הטבלה הנתונה בדוגמה:

האופרטורים המתמטיים לבדיקת תנאי

<          גדול

=<        גדול או שווה

>          קטן

=>        קטן או שווה

=          שווה

<>        שונה

NOT    בודק אם תנאי אינו מתקיים. לדוגמא, התנאי If NOT Application.UserName = "Carmel" זהה לתנאי If Application.UserName <> "Carmel".

תוכן עניינים

מלאו פרטים ונחזור אליכם בהקדם
למדו מהמומחים שלנו

קורסים נוספים

למה לבחור בכרמל הדרכה?
אנחנו מציעים פתרונות איכותיים להדרכות מקצועיות שחוסכות לכם זמן ומשאבים, ומספקים לכם את הכלים לקחת את הכישורים שלכם צעד קדימה!
carmel website
מרצים מובילים

בעלי ניסיון הדרכתי
ומעשי עשיר

carmel website
מגיעים אליכם

אתם קובעים את
מיקום הקורס והמועד

carmel website
תאוריה ותרגול

חומרי לימוד ומעבדות
רשמיות של מיקרוסופט הזמינים בענן

carmel website
תוכנית מותאמת

התאמה מלאה ואישית
לדרישות ולצרכי הארגון