מאקרו אירוע ברמת הגיליון
מאקרו אירוע מיועד להפעלת מאקרו באופן אוטומטי.
ישנן שתי רמות של מאקרו אירוע –
מאקרו אירוע ברמת חוברת העבודה, שכולל אירועים שקשורים לקובץ עצמו כגון פתיחה, סגירה, שמירה וכד'.
מאקרו אירוע ברמת הגיליון, שכולל אירועים שקשורים לגיליון העבודה, כגון בחירת טווח, שינוי ערכים וכד'.
במאמר זה ובמאמר הזה, אתמקד במאקרו אירוע ברמת הגיליון, ואציג בפניכם אפשרויות שונות לבחירת האירועים שיפעילו את המאקרו.
לצורך ההדגמה, אשתמש במאקרו אירוע מסוג Worksheet_Change שמופעל בעת שינוי ערכים בגיליון.
אז ראשית, איך מוסיפים מאקרו אירוע לגיליון?
בעורך ה VBA בוחרים את הגיליון הרצוי בלחיצה כפולה על שמו:
לחילופין, ניתן גם להגיע ישירות לקוד של הגיליון בלחיצה ימנית על שם הלשונית בחוברת העבודה>הצג קוד:
ובחלונית הקוד נבחר ב worksheet ובאירוע Change:
אני רוצה שתשימו לב למילה השמורה Target, שמציינת את התא שהפעיל את האירוע.
תא זה יכול להיות שונה מהתא הנוכחי, לדוגמה –
אם נעמוד בתא A1 ונלחץ על אנטר, אז התא שהפעיל את האירוע, כלומר ה-Target הוא A1, אבל מכיוון שלחיצה על אנטר הורידה את הסמן לתא A2, אז ה ActiveCell הוא A2.
כאשר אנחנו מוסיפים מאקרו אירוע מסוג Change, אזי כל פעולת שינוי ערך בגיליון תפעיל את המאקרו.
אולם, לעתים אנחנו רוצים שהמאקרו יופעל רק בעת שינוי של תאים מסוימים. אז איך עושים זאת?
ראשית, עלינו להבין שכל אירוע יצית (כך קוראים לזה בשפה המקצועית…) את המאקרו. אולם אם נרצה שהפעולה תתבצע רק בתנאים מסוימים, יהיה עלינו להוסיף אותם לקוד עצמו. במקרה זה, במידה שהתנאים לא יתקיימו, המאקרו יוצת, אך לא יעשה שום פעולה, בהתאם לאופן שבו כתבנו את הקוד.
אז בואו נראה כמה דוגמאות:
הפעלת מאקרו עם שינוי הערך בתא A1 בלבד:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then 'Do something End If End Sub
הסבר:
בדקנו מה כתובת התא שהפעיל את האירוע. אם היא זהה לכתובת התא A1, הקוד יבצע את הפעולה הרצויה,
אם לא – הקוד יסיים את ריצתו ללא ביצוע פעולה.
טיפ: כיצד לשלוף את כתובת התא עם ובלי סימני הקיבוע ($):
הפקודה Target.Address תחזיר את הכתובת המוחלטת (כולל סימני ה $):
אולם, ניתן להוסיף פרמטרים שיקבעו האם להוסיף את סימני הקיבוע או לא באופן הבא:
בתוך הסוגריים נבחר האם להציג את הדולרים, כאשר הפרמטר הראשון מתייחס לקיבוע העמודה והפרמטר השני לקיבוע השורה.
אם נבחר בערך FALSE, סימן ה $ יוצג, ואם נבחר ב TRUE- הוא לא יוצג.
אפשר להחליף את ה FALSE ב-0 ואת ה TRUE ב-1, כפי שאתם יכולים לראות בדוגמה לעיל.
ועכשיו, אפשר לעבור למאמר הבא, שבו נראה פקודות שונות, שיאפשרו לנו להריץ מאקרו בתלות בטווח שבו הוא נכתב.