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

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

מאקרו אירוע ברמת הגיליון – מה יפעיל את הקוד?

VBA Tip

מאקרו אירוע ברמת הגיליון – מה יפעיל את הקוד?

VBA Tip

מאקרו אירוע ברמת הגיליון

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

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

אז ראשית, איך מוסיפים מאקרו אירוע לגיליון?
בעורך ה VBA בוחרים את הגיליון הרצוי בלחיצה כפולה על שמו:

VB Editor
לחילופין, ניתן גם להגיע ישירות לקוד של הגיליון בלחיצה ימנית על שם הלשונית בחוברת העבודה>הצג קוד:

הצג קוד view code

ובחלונית הקוד נבחר ב worksheet ובאירוע Change:

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 תחזיר את הכתובת המוחלטת (כולל סימני ה $):
Watch

אולם, ניתן להוסיף פרמטרים שיקבעו האם להוסיף את סימני הקיבוע או לא באופן הבא:

חלונית Watches

בתוך הסוגריים נבחר האם להציג את הדולרים, כאשר הפרמטר הראשון מתייחס לקיבוע העמודה והפרמטר השני לקיבוע השורה.
אם נבחר בערך FALSE, סימן ה $ יוצג, ואם נבחר ב TRUE- הוא לא יוצג.
אפשר להחליף את ה FALSE ב-0 ואת ה TRUE ב-1, כפי שאתם יכולים לראות בדוגמה לעיל.

ועכשיו, אפשר לעבור למאמר הבא, שבו נראה פקודות שונות, שיאפשרו לנו להריץ מאקרו בתלות בטווח שבו הוא נכתב.

 

דילוג לתוכן