توقف VBA | قم بإيقاف رمز VBA مؤقتًا باستخدام وظيفة السكون والانتظار
إيقاف مؤقت لرمز VBA من التشغيل
يتم استخدام VBA Pause لإيقاف تشغيل الكود مؤقتًا لفترة زمنية محددة ولإيقاف رمز مؤقتًا في VBA نستخدم طريقة application.wait.
عندما نبني مشاريع VBA كبيرة بعد تنفيذ شيء ما ، قد نحتاج إلى الانتظار لبعض الوقت للقيام بمهام أخرى. في مثل هذه السيناريوهات ، كيف يمكننا إيقاف رمز الماكرو مؤقتًا للقيام بمهمتنا؟ يمكننا إيقاف رمز فبا مؤقتًا لفترة زمنية محددة باستخدام وظيفتين وهما "انتظر" و "سكون".
كيفية إيقاف الكود مؤقتًا باستخدام طريقة الانتظار؟
"الانتظار" هي الوظيفة التي نستخدمها في VBA للاحتفاظ بتشغيل الماكرو لفترة محددة من الوقت. من خلال تطبيق هذه الوظيفة ، نحتاج إلى ذكر الوقت الذي يجب أن ينتظر فيه الكود.
يمكنك تنزيل قالب VBA Pause Excel من هنا - قالب VBA Pause Excelعلى سبيل المثال ، إذا كنت تقوم بتنفيذ التعليمات البرمجية في الساعة 13:00:00 إذا قمت بتوفير الوقت كـ "13:15:00" ، فسيتم تشغيل الماكرو لمدة 15 دقيقة.
الآن ، انظر إلى وسيطة دالة WAIT في VBA.
في حجة الوقت ، نحتاج إلى ذكر الوقت الذي يجب أن تتوقف فيه التعليمات البرمجية مؤقتًا أو تنتظر.
على سبيل المثال ، انظر إلى رمز VBA أدناه.
رمز:
Sub Pause_Example1 () Range ("A1"). القيمة = نطاق "Hello" ("A2"). القيمة = "Welcome" Application.Wait ("13:15:00") Range ("A3"). Value = " إلى VBA "End Sub
تذكر أثناء تشغيل هذا الرمز ، وقت نظامي هو 13:00:00 ، بمجرد أن أقوم بتشغيل الكود ، سيتم تنفيذ أول سطرين ، أي
النطاق ("A1"). القيمة = "مرحبًا" & النطاق ("A2"). القيمة = "مرحبًا"
ولكن إذا نظرت إلى السطر التالي الذي يقول Application.Wait ("13:15:00") ، لذلك بعد تنفيذ مهام الخطوط هذه ، سيتم إيقاف الماكرو مؤقتًا لمدة 15 دقيقة ، أي بدءًا من الساعة 13:00:00 ، سينتظر النظام يصل الوقت إلى الساعة 13:15:01.
بمجرد وصول وقت نظامي إلى ذلك الوقت ، سيتم تنفيذ سطور التعليمات البرمجية المتبقية.
النطاق ("A3"). القيمة = "إلى VBA"
ومع ذلك ، فهذه ليست أفضل طريقة لممارسة كود الإيقاف المؤقت ، فلنفترض أنك تقوم بتشغيل الكود في أوقات مختلفة ، ثم نحتاج إلى استخدام وظيفة NOW VBA مع وظيفة TIME VALUE.
الآن تقوم الوظيفة بإرجاع التاريخ والوقت الحاليين حسب النظام الذي نعمل عليه.
تحتفظ وظيفة قيمة الوقت بالوقت من 00:00:00 إلى 23:59:29.
حسنًا ، افترض أننا بحاجة إلى إيقاف الكود مؤقتًا لمدة 10 دقائق كلما قمنا بتشغيل الكود ، ثم يمكننا استخدام الكود أدناه.
رمز:
Sub Pause_Example1 () Range ("A1"). القيمة = نطاق "Hello" ("A2"). القيمة = "مرحبًا" Application.Wait (Now () + TimeValue ("00:00:10")) النطاق (" A3 "). القيمة =" إلى VBA "End Sub
هذا مشابه للرمز السابق ولكن الاختلاف الوحيد هو أننا أضفنا وظيفة NOW & TIME VALUE.
عندما نقوم بتشغيل هذا الرمز ، فسيتم تعليقه أو إيقافه مؤقتًا لمدة 10 دقائق.
كيفية إيقاف رمز VBA مؤقتًا باستخدام طريقة السكون؟
النوم وظيفة معقدة في VBA لأنها ليست وظيفة مضمنة. نظرًا لأنه ليس مضمّنًا من أجل إتاحته للاستخدام ، نحتاج إلى إضافة الكود أدناه إلى الجزء العلوي من وحدتنا.
رمز:
# If VBA7 ثم Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'لأنظمة 64 بت # Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds طويلة) # End If' لأنظمة 32 بت
عليك فقط نسخ الكود أعلاه ولصقه في الجزء العلوي من الوحدة.
سبب حاجتنا إلى إضافة الكود أعلاه لأن SLEEP هي وظيفة VBA مقدمة في ملفات Windows DLL ، لذلك نحتاج إلى إعلان التسمية قبل أن نبدأ الإجراء الفرعي.
حسنًا ، لنلقِ نظرة على مثال وظيفة SLEEP الآن.
رمز:
Sub Pause_Example2 () تعتيم StartTime على هيئة String DimTime مثل String StartTime = Time MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub
أولاً ، أعلنا عن متغيرين هما String.
خافت وقت البدء كسلسلة خافتة وقت الانتهاء كسلسلة
ثم قمنا بتعيين وظيفة TIME excel إلى متغير StartTime. ترجع الدالة TIME الوقت الحالي حسب النظام.
StartTime = الوقت
ثم قمنا بتعيين نفس الشيء لإظهاره في مربع الرسالة.
برنامج MsgBox StartTime
ثم قمت بتطبيق وظيفة SLEEP كـ Sleep (10000).
هنا 10000 مللي ثانية أي ما يعادل 10 ثوانٍ في VBA.
ثم ، أخيرًا ، قمت بتعيين وظيفة TIME واحدة إلى متغير EndTime .
الآن مرة أخرى لقد كتبت رمزًا لإظهار الوقت.
EndTime = الوقت
سيظهر هذا الفرق بين وقت البدء ووقت الانتهاء.
الآن سأقوم بتنفيذ الكود وأرى ما هو وقت البدء.
عندما أقوم بتنفيذ الكود ، يكون وقت نظامي هو 13:40:48 والآن سينام الرمز الخاص بي لمدة 10 ثوانٍ. في النهاية وقتي على النحو التالي.
لذلك ، على هذا النحو ، يمكننا إيقاف تشغيل الكود مؤقتًا لفترة محددة من الوقت.