क्या प्रगतिबार उपयोगकर्ताफॉर्म को वीबीए में मोडल या मॉडेलिस के रूप में दिखाना बेहतर है? वीबीए में प्रगति संकेतकों के विकास के लिए सर्वोत्तम प्रथाएं क्या हैं?क्या प्रगतिबार उपयोगकर्ताफॉर्म को वीबीए में मोडल या मॉडेलिस के रूप में दिखाना बेहतर है?
मोडलेस उपयोगकर्ताफॉर्म को Application.Interactive = False
के उपयोग की आवश्यकता होती है, जबकि मॉडल उपयोगकर्ताफॉर्म अपनी प्रकृति से ब्लॉक प्रक्रिया तक समाप्त होने तक आवेदन के साथ किसी भी बातचीत को अवरुद्ध करते हैं, या रद्द कर दिया जाता है।
तो Application.Interactive = False
प्रयोग किया जाता है, हालांकि, Esc कुंजी कोड निष्पादन, तो Application.EnableCancelKey = xlErrorHandler
के उपयोग और त्रुटि हैंडलिंग (Err.Number = 18
) दोनों UserForm और बुला प्रक्रिया में आवश्यक है व्यवधान।
संसाधन गहन कॉलिंग प्रक्रियाओं के परिणामस्वरूप CommandButton_Click
और UserForm_Activate
मॉडल मॉड्यूल उपयोगकर्ताफॉर्म में मिस्फीयरिंग के परिणामस्वरूप हो सकते हैं।
सामान्य रूप से, प्रगति संकेतक जो मोडल उपयोगकर्ताफॉर्म का उपयोग करते हैं, सरल लगते हैं, क्योंकि निष्पादित किया जा रहा कोड पूरी तरह से उपयोगकर्ताफॉर्म मॉड्यूल में निहित है, और चर के पारित होने की आवश्यकता कम है।
समस्या, हालांकि, प्रगति संकेतकों के लिए मोडल उपयोगकर्ताफॉर्म का उपयोग करने के साथ समस्या यह है कि प्रत्येक प्रक्रिया के लिए एक अलग उपयोगकर्ताफॉर्म मॉड्यूल आवश्यक है जिसके लिए प्रगति संकेतक की आवश्यकता होती है, क्योंकि कॉलिंग प्रक्रिया UserForm_Activate प्रक्रिया के अंदर होनी चाहिए।
इसलिए, मॉडल मॉडल में एक एकल पुन: प्रयोज्य प्रगति संकेतक होने के बावजूद, यह एकाधिक मोडल उपयोगकर्ताफॉर्म के भीतर कोड निष्पादित करने से कम विश्वसनीय होगा।
किस तरह से बेहतर है?
धन्यवाद!
सुझाव GSerg के लिए धन्यवाद, लेकिन मैंने अतीत में इसका उपयोग करने का प्रयास किया है, लेकिन एक्सेल 2007 विंडो को अपडेट करना बंद कर देता है और एप्लिकेशन विंडो के शीर्ष पर "प्रतिसाद नहीं दे रहा" दिखाता है। – Kuyenda
मुझे कार्यालय 2007 के साथ बहुत अनुभवी नहीं है, लेकिन यदि आप 'स्टेटसबार' के मान को सेट करने के बाद सही तरीके से DoEvents को कॉल करते हैं तो क्या होगा? – GSerg
हू, यह काम किया। वाह, यह एक अच्छा विकल्प है यह नहीं है! धन्यवाद जीएसआरजी! – Kuyenda