2009-07-03 12 views
8

मेरे पास एक दिनचर्या है जो विसंगतियों की तलाश में हजारों रिकॉर्ड की जांच करती है। इसे पूरा करने में 5 मिनट का समय लग सकता है और हालांकि मैं प्रगति पट्टी और समय सीमा गिनती प्रदान करता हूं, मुझे यकीन नहीं है कि मैं रिपोर्ट छोड़ने के लिए लोक प्रेसिंग ctrl-break को प्रोत्साहित करना चाहता हूं, इसे अपेक्षा से अधिक समय लेना चाहिए।उपयोगकर्ताओं को लंबे समय से चलने वाले वीबीए कार्यों से बाहर निकलने की अनुमति कैसे दें?

प्रगति पट्टी में एक बटन काम नहीं करेगा क्योंकि फ़ॉर्म गैर-मोडल है, तो क्या इस स्थिति में उपयोगकर्ताओं को छोड़ने की अनुमति देने का कोई साफ तरीका है?

उत्तर

11

आपको DoEvents और एक वेरिएबल की आवश्यकता है जिसका दायरा आप जो चल रहे हैं उसके दायरे से अधिक है। यही है, अगर यह सिर्फ एक प्रक्रिया है, तो आपको मॉड्यूल स्तर चर की आवश्यकता है। यदि यह एक से अधिक मॉड्यूल है, तो आपको एक वैश्विक चर की आवश्यकता है। यहाँ

Stopwatch at DDoE

आम तौर पर देखें, वीबी इंजन प्रोसेसर बाँध जाएगा जब तक यह किया है। DoEvents के साथ, हालांकि, वीबी प्रोसेसर को कतार में जो भी हो, उस पर काम करने की अनुमति देता है, फिर वीबी पर वापस आ जाता है।

+0

महान उत्तर! पता नहीं था कि आप यह कर सकते हैं! – mandroid

+0

शानदार। धन्यवाद डिक। – Lunatik

+0

+1 अच्छा जवाब। बैज का आनंद लें :) – brettdj

0

मुझे नहीं लगता कि ऐसा करने का एक तरीका है जैसे आप इसे काम करना चाहते हैं। वीबीए एक स्क्रिप्टिंग भाषा है, इसलिए जब आप अपनी प्रक्रिया शुरू करते हैं, तो यह तब तक चलने वाला है जब तक यह पूरा नहीं हो जाता है। यदि आपके पास कहीं और बटन था, तो मूल प्रक्रिया चलने के दौरान भी आप इसे क्लिक करने देंगे, मुझे यकीन नहीं है कि आप उस प्रक्रिया को कैसे संदर्भित करेंगे और इसे रोक देंगे।

आप उपयोगकर्ता से पूछना चाहते हैं कि वे क्या चाहते हैं, लेकिन इससे यह और भी अधिक समय तक चल जाएगा।

इसके अलावा आप एक्सेल के बाहर की स्थिति के लिए अपनी प्रक्रिया की जांच कर सकते हैं और जब तक यह सच हो तब तक चलते रहें। कुछ आसान जांच हो सकती है कि एक निश्चित पाठ फ़ाइल फ़ोल्डर में है या नहीं। यदि आप प्रक्रिया को रोकना चाहते थे, तो फ़ोल्डर खोलें और फ़ाइल को ले जाएं। आपके लूप के अगले पुनरावृत्ति पर, यह फ़ाइल नहीं देखेगा और चलना बंद कर देगा। Cludgy, अक्षम, और सुरुचिपूर्ण नहीं, लेकिन यह काम करेगा। आप एक्सेल के दूसरे उदाहरण में चल रहे किसी अन्य एक्सेल शीट में मूल रूप से कोई भी सेल, चेकबॉक्स, रेडियोधटन, किसी भी नियंत्रण की जांच कर सकते हैं। फिर से गुस्सा

CTRL + ब्रेक काम करता है। इसे स्वीकार करें और आगे बढ़ें। हालांकि, इसके बारे में एक साफ चाल यह है कि यदि आप पासवर्ड को अपने कोड की सुरक्षा करते हैं और उन्होंने CTRL + Break दबाया है, तो डीबग विकल्प अनुपलब्ध है और वे केवल जारी या समाप्त हो जाएंगे।

यदि यह कोड अक्सर चल रहा है, तो क्या आपने कुछ ऐसा स्क्रिप्टिंग माना है जो मानव के कंप्यूटर का उपयोग नहीं कर रहा है? मैं टेलनेट स्क्रीन स्क्रैपिंग मैक्रोज़ चलाता था जो हमारे विगेट्स के माध्यम से जाने में घंटों लगते थे, लेकिन मैं हमेशा उन्हें एक अलग कंप्यूटर पर चलाता था या जब मैं वहां नहीं था (रातें/सप्ताहांत)।

संबंधित मुद्दे