השהיית VBA | השהה את קוד ה- VBA באמצעות פונקציית שינה והמתנה

השהה את קוד ה- VBA מריצה

VBA Pause משמש להשהיית הקוד מביצועו למשך זמן מוגדר ולהשהיית קוד ב- VBA אנו משתמשים בשיטת application.wait.

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

כיצד להשהות קוד בשיטת המתנה?

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

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

לדוגמא, אם אתה מבצע את הקוד בשעה 13:00:00 אם אתה מספק את הזמן כ- "13:15:00" אז הוא ישמור על פעולת המאקרו למשך 15 דקות.

כעת, התבונן בטיעון הפונקציה WAIT ב- VBA.

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

לדוגמה, עיין בקוד ה- VBA שלמטה.

קוד:

 תת Pause_Example1 () טווח ("A1"). ערך = "שלום" טווח ("A2"). ערך = "ברוך הבא" יישום. המתן ("13:15:00") טווח ("A3"). ערך = " ל- VBA "סוף משנה 

זכרו בזמן הפעלת קוד זה זמן המערכת שלי הוא 13:00:00, ברגע שאפעיל את הקוד הוא יבצע את שתי השורות הראשונות כלומר

טווח ("A1"). ערך = "שלום" וטווח ("A2"). ערך = "ברוך הבא"

אבל אם מסתכלים על השורה הבאה כתוב Application.Wait ("13:15:00"), אז לאחר ביצוע משימות שורות אלה, המקרו שלי יושהה למשך 15 דקות כלומר משעה 13:00:00 הוא יחכה עד שהמערכת שלי הזמן מגיע 13:15:01.

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

טווח ("A3"). ערך = "ל- VBA"

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

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

פונקציית TIME Value מחזיקה את הזמן בין 00:00:00 עד 23:59:29.

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

קוד:

 תת Pause_Example1 () טווח ("A1"). ערך = "שלום" טווח ("A2"). ערך = "ברוך הבא" יישום. המתן (עכשיו () + זמן ערך ("00:00:10")) טווח (" A3 "). ערך =" ל- VBA "משנה משנה 

זה דומה לקוד הקודם, אך ההבדל היחיד הוא שהוספנו את הפונקציה NOW & TIME VALUE.

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

כיצד להשהות את קוד VBA בשיטת שינה?

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

קוד:

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

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

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

אוקי, בואו נסתכל על הדוגמה של פונקציית שינה.

קוד:

 משנה Pause_Example2 () עמעום זמן התחלה כמחרוזת עמום זמן זמן כמחרוזת התחלה זמן = זמן MsgBox זמן התחלה שינה (10000) זמן זמן = זמן MsgBox סוף זמן סוף משנה 

ראשית, הכרזנו על שני משתנים כמחרוזת.

 עמעום זמן התחלה כמחרוזת עמום סוף זמן כמחרוזת 

לאחר מכן הקצנו את פונקציית ה- excel TIME למשתנה StartTime. פונקציית TIME מחזירה את הזמן הנוכחי לפי המערכת.

StartTime = זמן

ואז הקצנו אותו להופיע בתיבת ההודעה.

MsgBox StartTime

ואז החלתי את פונקציית SLEEP כ- Sleep (10000).

כאן 10000 זה אלפיות השנייה ששווה ל- 10 שניות ב- VBA.

ואז, סוף סוף, הקצתי את פונקציית TIME אחת נוספת למשתנה EndTime .

עכשיו שוב כתבתי קוד כדי להראות את השעה.

EndTime = זמן

זה יראה את ההבדל בין זמן התחלה לזמן סיום.

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

כשאני מבצע את הקוד זמן המערכת שלי הוא 13:40:48 ועכשיו הקוד שלי ישן למשך 10 שניות. בסוף הזמן שלי הוא כדלקמן.

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