VBA रोकें - नींद और प्रतीक्षा फ़ंक्शन का उपयोग करके VBA कोड रोकें

VBA कोड को रनिंग से रोकें

VBA पॉज़ का उपयोग निर्दिष्ट समय के लिए कोड को निष्पादित करने से रोकने के लिए किया जाता है और VBA में एक कोड को रोकने के लिए हम application.wait विधि का उपयोग करते हैं।

जब हम कुछ प्रदर्शन करने के बाद बड़े VBA प्रोजेक्ट बनाते हैं, तो हमें अन्य कार्यों को करने के लिए कुछ समय इंतजार करना पड़ सकता है। ऐसे परिदृश्यों में, हम अपने कार्य को करने के लिए मैक्रो कोड को कैसे रोकते हैं? हम दो कार्यों का उपयोग करके निर्दिष्ट समय अवधि के लिए VBA कोड को रोक सकते हैं, और वे कार्य "प्रतीक्षा" और "नींद" हैं।

प्रतीक्षा विधि का उपयोग करके कोड को कैसे रोकें?

"प्रतीक्षा" वह फ़ंक्शन है जिसका उपयोग हम VBA में एक विशिष्ट समय के लिए चलने वाले मैक्रो को पकड़ने के लिए करते हैं। इस फ़ंक्शन को लागू करने से, हमें यह उल्लेख करना होगा कि हमारे कोड को किस समय तक इंतजार करना चाहिए।

उदाहरण के लिए, यदि आप 13:00:00 पर कोड निष्पादित कर रहे हैं, यदि आप "13:15:00" के रूप में समय की आपूर्ति करते हैं, तो यह 15 मिनट तक चलने वाले मैक्रो को पकड़ लेगा।

अब, VBA में WAIT फ़ंक्शन के तर्क को देखें।

समय तर्क में, हमें यह उल्लेख करने की आवश्यकता है कि हमारे कोड को किस समय रुकना चाहिए या इंतजार करना चाहिए।

उदाहरण के लिए, नीचे दिए गए VBA कोड को देखें।

कोड:

उप Pause_Example1 () श्रेणी ("A1")। मान = "नमस्ते" श्रेणी ("A2")। मान = "आपका स्वागत है" Application.Wait ("13:15:00") श्रेणी ("A3")। Value = " वीबीए के लिए "एंड सब

याद रखें, इस कोड को चलाते समय, मेरे सिस्टम का समय 13:00:00 है। जैसे ही मैं कोड चलाता हूं, यह पहली दो पंक्तियों को निष्पादित करेगा

श्रेणी ("A1")। मान = "हैलो" और श्रेणी ("A2")। मान = "स्वागत"

लेकिन अगर आप अगली पंक्ति को देखते हैं, तो यह Application.Wait ("13:15:00") कहता है, इसलिए उन पंक्तियों के कार्यों को निष्पादित करने के बाद, मेरे मैक्रो को 15 मिनट के लिए रोक दिया जाएगा, अर्थात 13:00:00 बजे से, यह मेरे सिस्टम का समय 13:15:01 तक पहुंचने तक इंतजार करेंगे।

एक बार मेरे सिस्टम का समय उस समय तक पहुंच जाता है, तो यह कोड की शेष लाइनों को निष्पादित करेगा।

रेंज ("ए 3")। मूल्य = "टू वीबीए"

हालाँकि, यह पॉज़ कोड का अभ्यास करने का सबसे अच्छा तरीका नहीं है। मान लें कि आप अलग-अलग समय पर कोड चला रहे हैं, और फिर हमें TIME VALUE फ़ंक्शन के साथ Now VBA फ़ंक्शन का उपयोग करना होगा।

अब हम जिस सिस्टम पर काम कर रहे हैं, उसके अनुसार कार्य की वर्तमान तिथि और समय लौटाता है।

TIME मान फ़ंक्शन 00:00:00 से 23:59:29 तक का समय रखता है।

ठीक है, मान लें कि जब भी हम कोड चलाते हैं, तो हमें 10 मिनट के लिए कोड को रोकना होगा, फिर हम नीचे दिए गए कोड का उपयोग कर सकते हैं।

कोड:

उप Pause_Example1 () श्रेणी ("A1")। मान = "नमस्ते" श्रेणी ("A2")। मान = "आपका स्वागत है" Application.Wait (अब () + TimeValue ("00:00:10")) श्रेणी (") ए 3 ")। मूल्य =" टू वीबीए "एंड सब

यह पिछले कोड के समान है, लेकिन एकमात्र अंतर यह है कि हमने अभी और समय मान फ़ंक्शन जोड़ा है।

जब भी हम इस कोड को चलाते हैं, यह 10 मिनट के लिए निष्पादन को रोक देगा या रोक देगा।

नींद विधि का उपयोग करके VBA कोड को कैसे रोकें?

VBA में नींद एक जटिल कार्य है क्योंकि यह एक अंतर्निहित कार्य नहीं है। चूंकि यह निर्मित में उपयोग करने के लिए उपलब्ध नहीं है, इसलिए हमें नीचे दिए गए कोड को अपने मॉड्यूल के शीर्ष पर जोड़ना होगा।

कोड:

#If VBA7 तब पब्लिक डिक्लेयर PtrSafe सब स्लीप लिब "कर्नेल 32" (ByVal dwMilliseconds as LongPtr) '64 बिट सिस्टम के लिए #Else पब्लिक डिक्लेयर सब स्लीप लिब' k कर्नल 32 '(ByVal dwMilliseconds लॉन्ग) #End if' 32 बिट सिस्टम के लिए।

आपको बस उपरोक्त कोड को कॉपी करना होगा और मॉड्यूल के शीर्ष पर पेस्ट करना होगा।

कारण हमें उपरोक्त कोड जोड़ने की आवश्यकता है क्योंकि SLEEP विंडोज DLL फ़ाइलों में प्रस्तुत एक VBA फ़ंक्शन है, इसलिए हमें उपप्रकार शुरू करने से पहले हमें नामकरण की घोषणा करने की आवश्यकता है।

ठीक है, अब SLEEP फ़ंक्शन के उदाहरण को देखें।

कोड:

सब पॉज़_एक्सप्लोम 2 () डिम स्टार्टटाइम ऐज़ स्ट्रिंग डिम एंडटाइम के रूप में स्ट्रिंग स्टार्टटाइम = टाइम MsgBox स्टार्टटाइम स्लीप (10000) एंडटाइम = टाइम MsgBox एंडटाइम एंड सब

सबसे पहले, हमने स्ट्रिंग के रूप में दो चर घोषित किए हैं।

स्ट्रिंग के रूप में मंद स्टार्टिंग

फिर हमने टाइमटाइम एक्सेल फ़ंक्शन को स्टार्टटाइम चर में असाइन किया है। TIME फ़ंक्शन सिस्टम के अनुसार वर्तमान समय लौटाता है।

स्टार्टटाइम = समय

फिर हमने संदेश बॉक्स में दिखाने के लिए इसे असाइन किया है।

MsgBox StartTime

फिर मैंने स्लीप (10000) के रूप में SLEEP फ़ंक्शन लागू किया है।

यहां 10000 मिलीसेकंड है, जो VBA में 10 सेकंड के बराबर है।

फिर, अंत में, मैंने एक और TIME फ़ंक्शन को वैरिएबल EndTime को सौंपा है

अब फिर से, मैंने समय दिखाने के लिए एक कोड लिखा है।

अंत समय = समय

यह प्रारंभ समय और समाप्ति समय के बीच का अंतर दिखाएगा।

अब मैं कोड निष्पादित करूंगा और देखूंगा कि शुरुआती समय क्या है।

जब मैं कोड निष्पादित करता हूं, तो मेरे सिस्टम का समय 13:40:48 है, और अब मेरा कोड 10 सेकंड के लिए सो जाएगा। अंत में, मेरा समय इस प्रकार है।

तो, इस तरह, हम कोड को निर्दिष्ट समय के लिए निष्पादित करने से रोक सकते हैं।

दिलचस्प लेख...