חלונית Immediate
רוב כותבי המאקרו מכירים את חלונית Watches
(לא מכירים? כדאי מאוד לקרוא כאן)
אבל יש חלונית נוספת, חשובה, מעניינת ובעיקר יעילה, אך פחות מוכרת – חלונית Immediate
אז מה היא עושה?
היא מאפשרת להריץ שורות קוד מחוץ לרוטינה, בעיקר לצורך בדיקתן, אבל לא רק…
ולפני שנראה אילו פעולות אפשר לעשות, אציין שהאפשרות הזאת זמינה רק כאשר לא מתבצעת ריצה של קוד (בין אם הקוד לא הופעל כלל, ובין אם עצר באמצע, בשימוש בנקודת עצירה)
הצגת החלונית נעשית מתוך תפריט View>Immediate Window או באמצעות שילוב המקשים Ctrl+G
קבלת מידע
רוצים לקבל מידע על הקובץ? הגיליון? האפליקציה?
כתבו בחלונית Immediate את הפקודה הרצויה ולפניה סימן שאלה (?).
לסיום לחצו על המקש enter במקלדת
לדוגמה, הפקודה:
תציג בחלונית את שם המשתמש כפי שהוגדר בתוכנה:
בצורה דומה, הפקודה שלהלן
תציג את מספר השורה של התא הפעיל:
ביצוע פקודות VBA
כתבו את הפקודה, ללא סימן השאלה
הפקודה שלעיל תזין את הערך 10 לתא A1
ודוגמה יעילה נוספת:
נניח שכתבתם מאקרו אירוע והשתמשתם בפקודה
Application.EnableEvents = False
לביטול רגעי של האירוע שמצית את המאקרו.
אם מסיבה כלשהי שכחתם להחזיר את הפקודה ל True, שום מאקרו אירוע לא יפעל!
הפתרון?
במקום לכתוב קוד בתוך המודול ובתוכו הפקודה להחזרת אפשרות הצתת האירועים
Application.EnableEvents = True
כתבו את הפקודה ישירות בחלונית Immediate ולחצו על Enter!
debug.print
מאפשרת "להדפיס" מידע לחלונית, תוך כדי ריצת הקוד.
בדרך זו אנחנו יכולים לצפות ולפקח על המידע, בזמן הריצה.
ובמה זה שונה מהמידע בחלונית WATCH? בכך שכל המידע שמודפס לחלונית נשמר ואנחנו יכולים לצפות בו בכל רגע נתון,
בניגוד לחלונית Watches, שם הוא משתנה תוך כדי הריצה.
לדוגמה:
בקוד הנ"ל יצרתי לולאה פשוטה:
וזו התוצאה בחלונית Immediate:
שינוי ערך משתנה תוך כדי ריצה
נניח שגיליתי שלולאה מסוימת שרצה 1000 פעמים נתקעת בשורה מסוימת, ואני מעוניינת לבדוק מה קרה שם:
בדוגמה שלעיל, עצרתי את הקוד כאשר מונה הלולאה (המשתנה i) הגיע לעשר (בדרך הזאת יכולתי לבדוק את עשר הפעמים הראשונות שהלולאה רצה), ועכשיו אני רוצה להקפיץ את מונה הלולאה.
מכיוון שהקוד עצר (הפקודה Stop מאפשרת לעצור את ריצת הקוד), אני יכולה לפנות עכשיו לחלונית Immediate, לשנות את המונה באופן הבא:
ואם תציגו גם את חלונית Watches, תוכלו לראות שהערך החדש המונה קיבל הוא 900
הרצת פונקציה או מאקרו אחר שקולט משתנים
כשאנחנו רוצים להריץ מאקרו שקולט משתנים, בדרך כלל נקרא לו מתוך מאקרו אחר:
לחילופין, נוכל להריץ אותו מתוך חלונית Immediate
הבהרות:
ניתן להריץ פקודה אחת בלבד בכל פעם
הפקודה אינה משפיעה על ריצת הקוד עצמו, וכל תפקידה הוא לשלוח מידע לחלון ה Immediate (ודאו שהחלון מוצג…)