2013-06-04 6 views
9

प्रारंभिक घटना में होने वाले लोगों के बाहर, वीबीए उपयोगकर्ताफॉर्म के भीतर त्रुटियों को कॉल करने के लिए वीबीए उपयोगकर्ताफॉर्म में त्रुटि कैसे पास करें, कॉलिंग विधि पर बुलबुले नहीं दिखते हैं। क्या त्रुटि को बुलबुला करने के लिए मजबूर करने का कोई तरीका है?कॉलिंग विधि

VBA UserForms एक घटना नामित userform_error जो के रूप में

Private Sub UserForm_Error(
    ByVal Number As Integer, 
    ByVal Description As MSForms.ReturnString, 
    ByVal SCode As Long, 
    ByVal Source As String, 
    ByVal HelpFile As String, 
    ByVal HelpContext As Long, 
    ByVal CancelDisplay As MSForms.ReturnBoolean 
) 

यह तार्किक है कि घटना UserForm_Error एक उपयोगकर्ता के रूप में एक त्रुटि तब होती है जब कहा जाता है लगता है परिभाषित किया गया है होते हैं, लेकिन यह मामला होने के लिए प्रतीत नहीं होता । वास्तव में, मुझे Userform_Error के लिए कोई दस्तावेज़ नहीं मिल रहा है।

मैंने एमएसडीएन, बिंग, Google, स्टैक ओवरफ्लो, डकडकगो की खोज की है, और मैं एक अच्छा तरीका, या उपयोगकर्ताफॉर्म_एर वास्तव में क्या करता है पर कोई दस्तावेज नहीं ढूंढ पाया है।

+1

एक्सेल वीबीए? वीबीए एक्सेस करें? क्या आप कोड के साथ उदाहरण दे सकते हैं, आप क्या करने की कोशिश कर रहे हैं? – shahkalpesh

+0

यह एक माइक्रोसॉफ्ट ऑफिस एप्लीकेशन नहीं है। – lfrandom

+0

मैं उपयोगकर्ताफॉर्म के साथ एक मैक्रो बनाने की कोशिश कर रहा हूं। उपयोगकर्ताफॉर्म में घटनाओं में एक त्रुटि हो सकती है। मैं चाहता हूं कि उस त्रुटि में प्रत्येक ईवेंट में त्रुटि हैंडलर में निर्माण करने के बजाय मुख्य मॉड्यूल को सूचित किया गया हो। – lfrandom

उत्तर

1

आप अपने उपयोगकर्ताफॉर्म कोड (जो एक वर्ग है) में त्रुटियों को जाल कर सकते हैं, फिर आपके त्रुटि फंसे कोड में मॉड्यूल में प्रक्रिया को कॉल करके आपके मुख्य कोड में त्रुटि विवरण पास कर सकते हैं।

वैकल्पिक रूप से, आप अपने यूजरफॉर्म चर WithEvents को अपने कॉलिंग कोड में घोषित कर सकते हैं, और त्रुटि होने पर अपना स्वयं का त्रुटि ईवेंट बढ़ा सकते हैं।

+0

पर राइट क्लिक करें मुझे डर है कि घोषित करना संभव नहीं है मानक मॉड्यूल में UserForm चर के साथ, यह संकलित नहीं होगा: संकलन त्रुटि: केवल ऑब्जेक्ट मॉड्यूल में मान्य है। – dee

+0

क्षमा करें, मुझे लगता है कि आप इसे किसी अन्य रूप से कॉल कर रहे थे, जो एक क्लास मॉड्यूल है। फिर आपको पहले विकल्प के साथ जाना होगा। –

2

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

कोई रास्ता नहीं त्रुटि बुलबुला अप करने के लिए नहीं है क्योंकि गैर-मूल संहिता की enter image description here प्रत्येक UserForm अपनी ही त्रुटि हैंडलिंग तंत्र के लिए के लिए, एक तरह से परेशान है, लेकिन है कि सबसे अच्छा मैं कर सकता है

इस के आसपास मेरे तरीका था कर। इसके अलावा, कुछ प्रकाश में और मेरा मतलब है बहुत हल्का और सिस्टम के साथ कोई सीमित/सीमित इंटरैक्शन नहीं था, मैं कोड की शुरुआत में अगली बार फिर से शुरू करने में सक्षम था और एक बार जब मैंने यूजरफॉर्म को If Err.Number>0 Then Err.Raise Err.Number चेक किया तो त्रुटि हैंडलर इसे पकड़ता है। हालांकि, जैसा कि आप शायद जानते हैं, अगर आप सावधानी के साथ दूसरा विकल्प चुनते हैं।

उम्मीद है कि मदद करता है। जब आप निर्णय लें तो मुझे बताएं।

5

इस के लिए आपको सटीक जानकारी देना मुश्किल है, घटक प्राचीन है। बस कुछ पृष्ठभूमि।

उपयोगकर्ताफॉर्म ऑब्जेक्ट Microsoft Actives 2.0, एक ActiveX घटक लाइब्रेरी द्वारा कार्यान्वित किया गया है। यह किसी भी एप्लिकेशन में फॉर्म जोड़ने के लिए एक सामान्य उद्देश्य पुस्तकालय था, यह केवल Office ऐप्स तक ही सीमित नहीं था। आप इसे वापस अपनी मशीन पर c: \ windows \ syswow64 \ fm20.dll (32-बिट मशीन के लिए system32) में पा सकते हैं। इस घटक के लिए प्रलेखन fm20.chm द्वारा आपूर्ति किया जाता था। यह सहायता फ़ाइल अब माइक्रोसॉफ्ट से उपलब्ध नहीं है, फिर भी आप इसे Google क्वेरी के साथ वापस पा सकते हैं। हालांकि, यह पेशकश करने वाली अधिकांश साइटें बहुत छायादार दिखती हैं। This one कम से कम पतला देखा। असल में यह फ़ाइल देखना काफी परेशान है, मैं सामग्री की तालिका ब्राउज़ कर सकता हूं लेकिन कोई भी पृष्ठ अब टेक्स्ट प्रदर्शित नहीं कर सकता है।

मुझे मिली एक वर्कअराउंड HTML कार्यशाला उपयोगिता के साथ फ़ाइल को विघटित करना था। यही कारण है कि f3evtError.htm नाम की एक फ़ाइल का उत्पादन किया, यह (सामग्री के लिए संपादित) इस तरह दिखता है:


त्रुटि इवेंट

तब होता है जब एक नियंत्रण एक त्रुटि का पता लगाता है और वापस नहीं लौट सकते एक कॉलिंग कार्यक्रम के लिए त्रुटि जानकारी।

सिंटेक्स

Private Sub object_Error(ByVal Number As Integer, ByVal Description As MSForms.ReturnString, _ 
    ByVal SCode As SCode, ByVal Source As String, ByVal HelpFile As String, _ 
    ByVal HelpContext As Long, ByVal CancelDisplay As MSForms.ReturnBoolean) 

त्रुटि घटना वाक्य रचना इन भागों में है:

  • वस्तु: आवश्यक है। एक मान्य वस्तु नाम।
  • अनुक्रमणिका: आवश्यक। इस घटना से जुड़े मल्टीपेज में पृष्ठ की अनुक्रमणिका।
  • संख्या: आवश्यक। एक अद्वितीय मान निर्दिष्ट करता है कि नियंत्रण त्रुटि की पहचान करने के लिए उपयोग करता है।
  • विवरण: आवश्यक। त्रुटि का एक पाठ विवरण।
  • स्कोड: आवश्यक। त्रुटि के लिए ओएलई स्थिति कोड निर्दिष्ट करता है। निम्न-आदेश 16 बिट्स एक मान निर्दिष्ट करते हैं जो संख्या तर्क के समान है।
  • स्रोत: आवश्यक। वह स्ट्रिंग जो नियंत्रण की पहचान करती है जिसने घटना की शुरुआत की थी।
  • हेल्पफ़ाइल: आवश्यक। त्रुटि फ़ाइल का वर्णन करने वाली सहायता फ़ाइल के लिए एक पूर्णतः योग्य पथ नाम निर्दिष्ट करता है।
  • हेल्पकॉन्टेक्स्ट: आवश्यक। सहायता फ़ाइल विषय की संदर्भ आईडी निर्दिष्ट करता है जिसमें त्रुटि का वर्णन होता है।
  • रद्द करें प्रदर्शन: आवश्यक। निर्दिष्ट करता है कि संदेश बॉक्स में त्रुटि स्ट्रिंग को प्रदर्शित करना है या नहीं।

टिप्पणियां

कोड त्रुटि घटना के लिए लिखा निर्धारित करता है कि नियंत्रण त्रुटि स्थिति के लिए प्रतिक्रिया करता है।

त्रुटि स्थितियों को संभालने की क्षमता एक एप्लिकेशन से दूसरे में भिन्न होती है। त्रुटि इवेंट शुरू होता है जब कोई त्रुटि होती है कि एप्लिकेशन को संभालने के लिए सुसज्जित नहीं है।


दुर्भाग्य से, यह सब कुछ है। यह अस्पष्ट है क्योंकि घटक का उपयोग कई अलग-अलग प्रकार के ActiveX होस्टों में किया जा सकता है और त्रुटि फंसे मेजबान कार्यान्वयन विवरण है। मुझे लगता है कि अंतिम अनुच्छेद वह है जो आप वास्तव में पूछ रहे हैं। मैं कहूंगा कि यह मानना ​​काफी सुरक्षित है, क्योंकि Office दस्तावेज़ में इसका उल्लेख नहीं है, इसलिए वास्तव में Office ऐप्स इस ईवेंट को ट्रिगर नहीं करते हैं। तथ्य यह है कि घटना अभी भी वीबीए संपादक में दिखाई दे रही है, यह वस्तु का मॉडल कैसे काम करता है इसका एक दुष्प्रभाव है। संपादक को फ़िल्टर करने के लिए कोई आसान तरीका नहीं है, यह ऑब्जेक्ट की प्रकाशित घटनाओं के सभी प्रदर्शित करता है।

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