פונקציית המתנה של VBA | כיצד להשתמש בשיטת ההמתנה של Excel VBA?

פונקציית המתנה של Excel VBA

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

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

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

התחביר של פונקציית WAIT הוא כדלקמן.

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

עד שהגיע הזמן שצוין הוא אומר FALSE והרגע שהגיע הזמן הוא מחזיר TRUE.

זה לא כמו פונקציית SLEEP מכיוון ש- WAIT היא פונקציה מובנית בה SLEEP היא פונקציית Windows. לפני שניגש לפונקציית SLEEP עלינו להזכיר את הקוד שלמטה בראש המודול. אבל WAIT לא דורש זאת.

קוד:

# אם VBA7 אז הצהיר פומבית את PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'עבור מערכות של 64 סיביות # אחרת ציבורי הכריז על Sub Sleep Lib "kernel32" (ByVal dwMilliseconds כל עוד)' עבור מערכות של 32 סיביות מסתיימות אם 

דוגמאות לשימוש בפונקציית ההמתנה של Excel VBA

אתה יכול להוריד תבנית VBA זו לחכות Excel כאן - תבנית VBA לחכות Excel

דוגמה מס '1

נניח שאתה עובד באקסל באמצע היום בשעה 14:30:00 ואתה רוצה שהקוד שלך יושהה עד שהשעה תהיה 14:40:00. אתה יכול להשתמש בקוד שלמטה.

קוד:

 תת Wait_Example1 () יישום. המתן "14:40:00" סוף משנה 

הקוד ימנע מההצטיינות שלך לעבוד עד השעה 14:40:00 במערכת ההפעלה שלך. מתן זמן כזה מסוכן מכיוון שאנחנו לא תמיד עובדים החל מהשעה 14:30:00 זה משתנה כל הזמן.

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

לכן, אנו יכולים להשתמש בפונקציה VBA NOW עם פונקציית TIME VALUE כדי להזין את הזמן שצוין מהזמן הנוכחי.

רק כדי להזכיר לך הפונקציה NOW () מחזירה את התאריך והשעה הנוכחיים בהתאם למערכת המחשב שלך. פונקציית TIMEVALUE מייצגת את השעה מ 00:00:00 עד 23:59:59 כלומר 23:59:59 אחר הצהריים בפורמט 24 שעות. זה ממיר את ערך המחרוזת לערך זמן.

לדוגמא NOW () + TIMEVALUE (00:02:30) פירושו זמן נוכחי + 2 דקות 30 שניות.

אם השעה הנוכחית היא 14:25:30 אז זה הופך להיות 14:28:00.

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

קוד:

 Sub Wait_Example2 () Application.Wait (Now () + TimeValue ("00:10:00")) Sub Sub 

חשוב להשתמש בפונקציה NOW () להשהייה מדויקת, אחרת יש סיכוי שחוברת העבודה של Excel שלך הושהתה עד חצות. עם זאת, אנו יכולים לצאת משיטת ההשהיה בכל נקודת זמן על ידי לחיצה על מקש Esc או על מקש הפסקה.

דוגמה מס '2

המתן 10 שניות בכל פעם שהלולאה פועלת

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

כדי לחשב רווח = (מכירה - עלות) אתה רוצה ליצור לולאה ואחרי כל לולאה, אתה רוצה לחכות 10 שניות כדי לבדוק אם התוצאה מדויקת או לא. הקוד שלמטה יעשה זאת.

קוד:

 תת Wait_Example3 () התעמעם כשלם עבור k = 2 עד 9 תאים (k, 4). ערך = תאים (k, 2) - תאים (k, 3) יישום. המתן (עכשיו () + זמן ערך ("00:00 : 10 ")) הבא k סוף משנה 

קוד זה יחשב את עמודת הרווח שורה אחר שורה. לאחר השלמת השורה הראשונה היא תחכה 10 שניות לפני שתחשב את השורה הבאה.

שינה VBA לעומת VBA המתן

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