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

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

טיפ VBA – חלונית Immediate

VBA Tip

טיפ VBA – חלונית Immediate

VBA Tip

חלונית Immediate

רוב כותבי המאקרו מכירים את חלונית Watches
(לא מכירים? כדאי מאוד לקרוא כאן)
אבל יש חלונית נוספת, חשובה, מעניינת ובעיקר יעילה, אך פחות מוכרת – חלונית Immediate

אז מה היא עושה?

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

הצגת החלונית נעשית מתוך תפריט View>Immediate Window או באמצעות שילוב המקשים Ctrl+G

קבלת מידע

רוצים לקבל מידע על הקובץ? הגיליון? האפליקציה?
כתבו בחלונית Immediate את הפקודה הרצויה ולפניה סימן שאלה (?).
לסיום לחצו על המקש enter במקלדת
לדוגמה, הפקודה:

Immidiate Window

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

Immidiate Window UserName

בצורה דומה, הפקודה שלהלן

Activecell.row

תציג את מספר השורה של התא הפעיל:

ActiveCell

ביצוע פקודות VBA

כתבו את הפקודה, ללא סימן השאלה

Immidiate 5

הפקודה שלעיל תזין את הערך 10 לתא A1

ודוגמה יעילה נוספת:

נניח שכתבתם מאקרו אירוע והשתמשתם בפקודה

Application.EnableEvents = False

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

Application.EnableEvents = True

כתבו את הפקודה ישירות בחלונית Immediate ולחצו על Enter!
Application.enableEvents

debug.print

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

לדוגמה:

בקוד הנ"ל יצרתי לולאה פשוטה:

Debug.Print

וזו התוצאה בחלונית Immediate:

Immidiate 8

שינוי ערך משתנה תוך כדי ריצה

נניח שגיליתי שלולאה מסוימת שרצה 1000 פעמים נתקעת בשורה מסוימת, ואני מעוניינת לבדוק מה קרה שם:

Immidiate 9

בדוגמה שלעיל, עצרתי את הקוד כאשר מונה הלולאה (המשתנה i) הגיע לעשר (בדרך הזאת יכולתי לבדוק את עשר הפעמים הראשונות שהלולאה רצה), ועכשיו אני רוצה להקפיץ את מונה הלולאה.

מכיוון שהקוד עצר (הפקודה Stop מאפשרת לעצור את ריצת הקוד), אני יכולה לפנות עכשיו לחלונית Immediate, לשנות את המונה באופן הבא:

Debug.Print

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

הרצת פונקציה או מאקרו אחר שקולט משתנים

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

Call Macro

לחילופין, נוכל להריץ אותו מתוך חלונית Immediate
Call Function

הבהרות:

ניתן להריץ פקודה אחת בלבד בכל פעם
הפקודה אינה משפיעה על ריצת הקוד עצמו, וכל תפקידה הוא לשלוח מידע לחלון ה Immediate  (ודאו שהחלון מוצג…)

 

דילוג לתוכן