प्रतीक्षा और विलंब
VBA में निर्दिष्ट समय के लिए एक्सेक्यूशन रोकने के तीन सामान्य तरीके हैं: Sleep, Application.Wait, और DoEvents। यह लेख प्रत्येक विधि के उपयोग, विशेषताओं, फायदे और नुकसान बताता है।
विधियों की तुलना
| विधि | इकाई | सटीकता | फायदे | नुकसान |
|---|---|---|---|---|
| Sleep | मिलीसेकंड | उच्च | उच्च सटीकता, सरल कोड | API घोषणा आवश्यक, अन्य ऑपरेशन ब्लॉक |
| Application.Wait | सेकंड | मध्यम | उपयोग आसान, Excel बिल्ट-इन | कम सटीकता, अन्य ऑपरेशन ब्लॉक |
| DoEvents | सेकंड | उच्च | अन्य प्रोसेसिंग की अनुमति | जटिल कोड, अधिक CPU उपयोग |
Sleep: Windows API का उपयोग
उपयोग
Sleep फंक्शन Win32 API का उपयोग करके निर्दिष्ट मिलीसेकंड प्रतीक्षा करता है:
sleep_wait.bas
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub SleepSePratiksha()
Sleep 3000 ' 3000 मिलीसेकंड (3 सेकंड) प्रतीक्षा
End Sub
विशेषताएं
- इकाई: मिलीसेकंड
- सटीकता: उच्च
- आवश्यकता: Win32 API घोषणा (kernel32.dll)
फायदे
- उच्च सटीकता: मिलीसेकंड स्तर की टाइमिंग
- सरल कोड: छोटा और सीधा
नुकसान
- API घोषणा आवश्यक: VBA बिल्ट-इन नहीं
- अन्य ऑपरेशन ब्लॉक: प्रतीक्षा के दौरान सभी प्रोसेसिंग रुकती है
Application.Wait: Excel बिल्ट-इन विधि
उपयोग
Application.Wait Excel VBA विधि है जो निर्दिष्ट समय तक रुकती है:
application_wait.bas
Sub ApplicationWaitSePratiksha()
Application.Wait (Now + TimeValue("00:00:05")) ' 5 सेकंड प्रतीक्षा
End Sub
विशेषताएं
- इकाई: सेकंड
- सटीकता: मध्यम
- दायरा: केवल Excel VBA
फायदे
- उपयोग आसान: API घोषणा अनावश्यक
- बिल्ट-इन फंक्शन: बाहरी लाइब्रेरी अनावश्यक
नुकसान
- कम सटीकता: केवल सेकंड स्तर
- अन्य ऑपरेशन ब्लॉक: प्रतीक्षा के दौरान सभी प्रोसेसिंग रुकती है
DoEvents: इवेंट प्रोसेसिंग के साथ प्रतीक्षा
उपयोग
DoEvents लूप में उपयोग होता है अन्य इवेंट प्रोसेस करने के लिए:
doevents_wait.bas
Sub DoEventsSePratiksha()
Dim endTime As Double
endTime = Timer + 5 ' 5 सेकंड बाद समाप्ति समय
Do While Timer < endTime
DoEvents ' अन्य इवेंट प्रोसेस करें
Loop
End Sub
विशेषताएं
- इकाई: सेकंड
- सटीकता: उच्च
- समवर्तीता: प्रतीक्षा के दौरान अन्य इवेंट प्रोसेस होते हैं
फायदे
- समवर्ती प्रोसेसिंग की अनुमति: प्रतीक्षा के दौरान अन्य VBA ऑपरेशन चल सकते हैं
- उच्च सटीकता: सेकंड स्तर पर अच्छी सटीकता
नुकसान
- जटिल कोड: लूप संरचना आवश्यक
- अधिक CPU उपयोग: निरंतर लूप एक्सेक्यूशन से लोड बढ़ता है
सही विधि चुनना
Sleep का उपयोग करें जब:
- मिलीसेकंड सटीकता चाहिए
- अन्य ऑपरेशन ब्लॉक करना स्वीकार्य है
- API घोषणाओं से परिचित हैं
Application.Wait का उपयोग करें जब:
- सबसे सरल कार्यान्वयन चाहिए
- सेकंड स्तर की सटीकता पर्याप्त है
- केवल Excel VBA में काम कर रहे हैं
DoEvents का उपयोग करें जब:
- प्रतीक्षा के दौरान अन्य ऑपरेशन जारी रखने हों
- UI रेस्पॉन्सिवनेस महत्वपूर्ण है
- अधिक CPU उपयोग स्वीकार्य है
सारांश
VBA में टाइम्ड डिले के तीन मुख्य दृष्टिकोण:
| उपयोग केस | अनुशंसित विधि |
|---|---|
| उच्च सटीकता टाइमिंग | Sleep |
| Excel में सरल विलंब | Application.Wait |
| प्रतीक्षा में रेस्पॉन्सिव UI | DoEvents |
अपनी विशिष्ट सटीकता, सरलता और समवर्ती प्रोसेसिंग आवश्यकताओं के अनुसार विधि चुनें।
#VBA
#Sleep
#Application.Wait
#DoEvents
#टाइमिंग