אם אחר כך הצהרה אחרת ב- Excel VBA (מוסבר עם דוגמאות)

ב- Excel VBA, הצהרת IF Then Else מאפשרת לך לבדוק אם יש מצב ולבצע פעולה בהתאם.

זה בעל ערך רב במצבים רבים כפי שנראה בדוגמאות בהמשך הדרכה זו.

כדי לתת לך דוגמה פשוטה, נניח שיש לך רשימת ציונים ב- Excel וברצונך להדגיש את כל אותם תלמידים שזכו בתואר A. עכשיו, אם אבקש ממך לעשות זאת באופן ידני, תבדוק את הציון של כל תלמיד ואם זה a, אתה תדגיש אותו, ואם לא, אז תשאיר אותו כפי שהוא.

ניתן לבנות את אותו ההיגיון ב- VBA באמצעות אם אז אחרת גם הצהרה (וכמובן לעשות הרבה יותר מסתם הדגשת ציונים).

במדריך זה אראה לך דרכים שונות בהן ניתן להשתמש במבנה 'אם אז אחרת' ב- Excel VBA, וכמה דוגמאות מעשיות בפעולה.

אבל לפני שאני נכנס לפרטים, הרשה לי לתת לך את התחביר של המשפט 'אם אחר כך'.

אם אתה מעוניין ללמוד VBA בדרך הקלה, בדוק את שלי הדרכה מקוונת ב- Excel VBA.

תחביר - אם אחר כך

להלן התחביר הגנרי של If Then Else לבנות ב- VBA

אם תנאי אז אמת_ קוד [אחרת שקר_ קוד]

אוֹ

מצב IF לאחר מכן true_code אחרת false_code סיום IF

שים לב כי חלק אחר בהצהרה זו הוא אופציונלי.

עכשיו אם אתה תוהה מה ההבדל בין שני התחביר, הרשה לי להבהיר.

התחביר הראשון הוא משפט פשוט בן שורה אחת, אם אז אין צורך להשתמש בהצהרת END IF.

עם זאת, בתחביר השני, החלק true_code נמצא בשורה השנייה. זה מועיל כאשר הקוד שאתה צריך להריץ במקרה שהתנאי IF נכון הוא ארוך ומורכב מכמה שורות.

כאשר אתה מפצל את הצהרת IF למספר שורות, עליך לספר ל- VBA היכן מסתיים המבנה IF Then.

מכאן שעליך להשתמש בהצהרת End IF.

במקרה שאתה לא משתמש ב- End IF בעת הצורך, VBA תראה לך שגיאה - "חסום IF ללא END IF"

דוגמאות לשימוש ב- IF Then Statement ב- VBA

כדי לתת לך מושג כיצד פועלת הצהרת IF-THEN ב- VBA, תן לי להתחיל עם כמה דוגמאות בסיסיות (כמה דוגמאות מעשיות ושימושיות יותר יוסברו בהמשך הדרכה זו).

נניח שיש לך ציון של תלמיד בתא A1 וברצונך לבדוק האם התלמיד עבר את הבחינה או לא (סף הציונים הוא 35).

לאחר מכן תוכל להשתמש בקוד הבא:

Sub CheckScore () If Range ("A1"). Value> = 35 ואז MsgBox "Pass" End Sub

הקוד לעיל כולל שורה אחת של הצהרת IF הבודקת את הערך בתא A1.

אם זה יותר מ -35, הוא מציג את ההודעה - "מעבר".

אם זה פחות מ -35, שום דבר לא קורה.

אבל מה אם אתה רוצה להציג הודעה בשני המקרים, בין אם סטודנט עבר את הבחינה או נכשל בה.

הקוד שלהלן יעשה זאת:

Sub CheckScore () אם טווח ("A1"). ערך> = 35 ואז MsgBox "עברו" אחר MsgBox "נכשל" הסתיים אם קצה Sub

הקוד לעיל משתמש ב- IF כמו גם בהצהרת ELSE לביצוע שני תנאים שונים. כאשר הציון גדול מ- (או שווה ל) 35, תנאי IF נכון, והקוד ממש מתחתיו מבוצע (הכל לפני הצהרת Else).

אך כאשר תנאי IF הוא FALSE, הקוד קופץ לחלק Else ומבצע בו את בלוק הקוד.

שים לב שכאשר אנו משתמשים בשורה אחת של הצהרת IF Then, איננו צריכים להשתמש ב- End IF. אך כאשר נחלק אותו ליותר משורה אחת, עלינו להשתמש במשפט End If.

מקוננים אם אז (הצהרות מרובות אם ואז)

עד כה השתמשנו באמירה יחידה של IF Then.

במקרה שיש לך מספר תנאים לבדוק, תוכל להשתמש ב:

  • תנאי IF מרובים
  • אם אחר כך הצהרה
  • אם אחר כך אם אחרת בונה

תן לי להראות לך כיצד אלה שונים וכיצד להשתמש בזה ב- Excel VBA.

הצהרות מרובות אם לאחר מכן

ניקח את אותה דוגמה לשימוש בציון של תלמיד.

אם התלמיד מציג פחות מ -35, ההודעה המוצגת היא 'נכשל', אם הציון גדול או שווה ל -35, ההודעה המוצגת היא 'העבר'.

אנו יכולים להשתמש בקוד שלהלן כדי לבצע זאת:

Sub CheckScore () If Range ("A1"). Value = 35 ואז MsgBox "Pass" סוף Sub

אתה יכול להשתמש במספר הצהרות IF Then כפי שמוצג למעלה. למרות שזה עובד, זה לא דוגמה לקידוד טוב (כפי שתראה את החלופות להלן).

במקרה שתחליט להשתמש בזה, זכור כי הצהרות אלה צריכות להיות עצמאיות או בלתי -הדדיות. הדבר החשוב לדעת כאן הוא שבמבנה לעיל, כל הצהרות ה- IF מוערכות ואת אלה שבהם התנאי נכון, הקוד מבוצע.

כך שגם אם הצהרת IF הראשונה נכונה, השנייה עדיין תוערך.

אם אחר כך הצהרה אחרת

נניח שהפעם, במקום להציג רק את ההודעה Pass/Fail, יש לנו תנאי נוסף.

אם התלמיד מציג פחות מ -35, ההודעה המוצגת היא 'נכשל', אם הציון גדול או שווה ל -35, ההודעה לתצוגה היא 'העבר', ואם הציון הוא יותר מ -80, ההודעה שתוצג הוא 'לעבור, בהבחנה'.

אנו יכולים להשתמש בקוד שלהלן כדי לבצע זאת:

תת CheckScore () אם טווח ("A1"). ערך <35 ואז MsgBox "נכשל" אחר אם טווח ("A1"). ערך <80 ואז MsgBox "עבר" אחר MsgBox "עובר, עם ההבחנה" סוף אם סוף אם סוף תַת

בקוד לעיל, השתמשנו במספר הצהרות IF (מקוננות אם אז) בעזרת Else.

אז יש מבנה 'אם אז אחר' בתוך מבנה 'אם אז אחר'. סוג זה של קינון מאפשר לך לבדוק אם יש מספר תנאים ולהריץ את גוש הקוד הרלוונטי.

אם אחר כך הצהרה אחרת

ניתן לייעל את הקוד לעיל (שראינו בסעיף הקודם) באמצעות משפט ElseIf.

הנה מה שאנחנו מנסים לעשות - אם התלמיד מציג פחות מ -35, ההודעה המוצגת היא 'נכשל', אם הציון גדול או שווה ל -35, ההודעה המוצגת היא 'עבר', ואם הציון הוא יותר מ -80, המסר המוצג הוא 'לעבור, בהבחנה'.

Sub CheckScore () If Range ("A1"). ערך <35 ואז MsgBox "נכשל" טווח אחר ("A1"). ערך <80 ואז MsgBox "Pass" אחר MsgBox "Pass, עם ההבחנה" End if End Sub

הקוד לעיל משתמש ב- ElseIf, המאפשר לנו לשמור את כל התנאים בתוך הצהרה אחת של IF Then.

שימוש ב- AND ו- OR ב- IF Then Else

עד כה במדריך זה, בדקנו רק מצב אחד בכל פעם.

עם זאת, כאשר יש לך מספר תנאים תלויים, תוכל להשתמש במשפט AND או OR עם תנאי IF.

להלן התחביר של שימוש בתנאי AND/OR עם המשפט IF Then.

IF Condition1 AND Condition2 ואז true_code אחרת false_code סיום IF

בקוד לעיל, רק כאשר מתקיימים גם תנאי 1 וגם תנאי 2, קוד ה- true מופעל. גם אם אחד התנאים אינו נכון, הוא יבצע את ה- false_code.

עם OR, גם אם אחד התנאים נכונים, הוא יבצע את קוד ה- true_code. רק כאשר כל התנאים שקריים, הוא מבצע את ה- false_code.

כעת בואו נראה כיצד הצהרת AND ו- OR פועלת עם מבנה IF Then Else.

נניח שיש לך את הציונים לשני נושאים במקום אחד, ואתה רוצה לבדוק את התנאים הבאים:

  • לְהִכָּשֵׁל - כאשר הציון נמוך מ -35 בכל אחד מהנבדקים.
  • לַעֲבוֹר - כאשר הציון גדול או שווה ל -35, אך פחות מ -80 בשני הנבדקים.
  • לעבור, בהצטיינות - כאשר הציון הוא יותר מ -35 בשני הנבדקים והוא שווה או שווה ל -80 באחד הנבדקים או שניהם.

הנה הקוד שיעשה זאת:

תת CheckScore () אם טווח ("A1"). ערך <35 או טווח ("B1"). ערך <35 ואז MsgBox "נכשל" טווח אחר ("A1"). ערך <80 וטווח ("B1"). ערך <80 ואז MsgBox "Pass" אחר MsgBox "Pass, עם הבחנה" End if End Sub

הקוד לעיל משתמש הן בהצהרות OR והן ב-.

אתה יכול גם לכתוב את אותו קוד בשינוי קל (באמצעות OR במקום AND).

Sub CheckScore () אם טווח ("A1"). ערך <35 או טווח ("B1"). ערך 80 או טווח ("B1"). ערך> 80 ואז מסוף MsgBox "Pass, עם הבחנה" אחר MsgBox "Pass" סוף אם סיום תת

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

שימוש ב- Not שווה ל- in If Then

בכל הדוגמאות לעיל, השתמשנו בתנאים הבודקים אם ערך שווה לערך שצוין או לא.

תוכל גם להשתמש בקודים דומים בעת בדיקה כאשר הערך אינו שווה לערך שצוין בקוד ה- VBA. לא שווה לייצוג ה- VBA של Excel.

כדי לראות דוגמה מעשית לשימוש, עיין בדוגמא 1 להלן.

שימוש ב- If Then Else עם לולאות ב- VBA

עד כה עברנו כמה דוגמאות שטוב להבין כיצד הצהרות 'IF-THEN' פועלות ב- VBA, אולם אינן מועילות בעולם המעשי.

אם אני צריך לדרג תלמידים, אני יכול לעשות זאת בקלות באמצעות פונקציות Excel.

אז בואו נסתכל על כמה דוגמאות שימושיות ומעשיות שיכולות לעזור לכם להפוך כמה דברים לאוטומטיים ולהיות יעילים יותר.

דוגמה 1 - שמור וסגור את כל חוברות העבודה למעט חוברת העבודה הפעילה

אם יש לך הרבה חוברות עבודה פתוחות וברצונך לסגור במהירות את כולם, למעט חוברת העבודה הפעילה, תוכל להשתמש בקוד שלהלן,

תת SaveCloseAllWorkbooks () Dim wb כחוברת עבודה עבור כל wb בחוברות עבודה בעת חידוש השגיאה הבא אם wb.Name ActiveWorkbook.Name ואז wb.Save wb.Close סוף אם הבא wb סוף המשנה

הקוד לעיל ישמור ויסגור את כל חוברות העבודה (למעט הקובץ הפעיל).

הוא משתמש בלולאת For Next כדי לעבור על אוסף כל חוברות העבודה הפתוחות ובודק את השם באמצעות תנאי IF.

אם השם אינו זהה לזה של חוברת העבודה הפעילה, הוא שומר וסוגר אותו.

במקרה שיש קוד VBA בכל אחד מחוברות העבודה ולא שמרת אותו בתור .xls או .xlsm, תראה אזהרה (מכיוון שקודי ה- vba הולכים לאיבוד כשאתה שומר אותו בפורמט .xlsx).

דוגמה 2 - הדגשת תאים עם ערכים שליליים

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

Sub HighlightNegativeCells () Dim Cll כטווח עבור כל Cll בבחירה אם Cll.Value <0 ואז Cll.Interior.Color = vbRed Cll.Font.Color = vbWhite סוף אם הבא Cll סוף Sub

הקוד לעיל משתמש בלולאה לכל אחד ובודק כל תא בבחירה שביצעת. אם לתא יש ערך שלילי, הוא מודגש באדום עם צבע גופן לבן.

דוגמה 3 - הסתר את כל גליון העבודה למעט גליון העבודה הנוכחי

למקרה שתרצה להסתיר במהירות את כל דפי העבודה למעט הגיליון הפעיל, תוכל להשתמש בקוד שלהלן:

Sub HideAllExceptActiveSheet () Dim ws כגיליון עבודה עבור כל ws ב- ThisWorkbook.Worksheets If ws.Name ActiveSheet.Name ואז ws.Visible = xlSheetHidden הבא ws סוף תת

הקוד לעיל משתמש בלולאה 'לכל אחד' כדי לעבור על אוסף של דפי עבודה. הוא בודק את השם של כל גליון עבודה ומסתיר אותו אם הוא אינו גליון העבודה הפעיל.

דוגמה 4 - חלץ את החלק המספרי ממחרוזת אלפאנומרית

אם יש לך מחרוזות אלפאנומריות בתאים ואתה רוצה לחלץ ממנו את החלק המספרי, תוכל לעשות זאת באמצעות הקוד שלהלן:

פונקציה GetNumeric (CellRef כמחרוזת) Dim StringLength כמספר שלם StringLength = Len (CellRef) עבור i = 1 ל- StringLength אם IsNumeric (Mid (CellRef, i, 1)) ואז התוצאה = תוצאה ואמצע (CellRef, i, 1) הבא i GetNumeric = פונקציית סיום התוצאה

קוד זה ייצור פונקציה מותאמת אישית ב- Excel שיכולה להשתמש בתוך גליון העבודה (ממש כמו פונקציה רגילה).

היכן לשים את קוד ה- VBA?

תוהה לאן קוד VBA הולך בחוברת העבודה שלך ב- Excel?

ל- Excel יש תומך תומך ב- VBA שנקרא עורך VB. עליך להעתיק ולהדביק את הקוד בחלון קוד המודול של עורך VB.

להלן השלבים לביצוע פעולה זו:

  1. עבור לכרטיסייה מפתחים.
  2. לחץ על האפשרות Visual Basic. פעולה זו תפתח את עורך ה- VB בקצה האחורי.
  3. בחלונית סייר הפרויקט בעורך VB, לחץ באמצעות לחצן העכבר הימני על כל אובייקט עבור חוברת העבודה שבה ברצונך להכניס את הקוד. אם אינך רואה את סייר הפרוייקטים עבור לכרטיסייה תצוגה ולחץ על סייר הפרוייקטים.
  4. עבור אל הוספה ולחץ על מודול. זה יכניס אובייקט מודול לחוברת העבודה שלך.
  5. העתק והדבק את הקוד בחלון המודול.

תוכל לעזור בפיתוח האתר, שיתוף הדף עם החברים שלך

wave wave wave wave wave