2013-02-09 17 views
7

मैं थोड़ी देर के लिए एक्सेल में वीबीए का उपयोग कर रहा हूं, और मैं अपनी सभी प्रक्रियाओं के लिए एक कस्टम त्रुटि हैंडलर का उपयोग करता हूं। मुझे पहली बार, Err.Raise (स्थिति Select Case ब्लॉक में स्थिति के साथ निपटने के लिए) की आवश्यकता होने की स्थिति में, और मैं यह नहीं समझ सकता कि कस्टम त्रुटि हैंडलर में त्रुटि को कैसे पास किया जाए। उठाए गए त्रुटि को कस्टम हैंडलर में पास करने के बजाय, वीबीए अपने स्वयं के बदसूरत और काफी बेकार त्रुटि संवाद को पॉप अप करता है। अगर कोई मुझे इस के आसपास जाने का रास्ता बता सकता है तो मैं बहुत सराहना करता हूं।मैं वीबीए में कस्टम त्रुटि हैंडलर में उठाए गए त्रुटि को कैसे पास करूं?

नीचे कोड का एक सामान्य संस्करण है जिसका उपयोग मैं कर रहा हूं (निष्पादन/परिवर्तनीय नाम निर्दोषों की रक्षा के लिए बदल दिए गए हैं)। gErrorHandler ऑब्जेक्ट एक वैश्विक स्तर पर आयाम वर्ग मॉड्यूल चर है जो किसी भी और सभी प्रक्रियाओं से त्रुटियों को संभालता है।

Public Function MyFunction(dblInputParameter As Double) As Double 
On Error GoTo Err_MyFunction 

    Dim dblResult as Double 

    Select Case dblInputParameter 

     ...Several case statements go here... 

     Case Else 
      Err.Raise vbObjectError + 1000, "MyProjectName.MyObjectName", "Error Description" 

    End Select 

    MyFunction = dblResult 

Exit_MyFunction: 
    Exit Function 

Err_MyFunction: 
    gErrorHandler.DisplayError Err.Number, Err.Description, Erl, csModule, "basMyModuleName", "MyFunction" 
    Resume Exit_MyFunction 

End Function 

और यहाँ त्रुटि संवाद है मैं कस्टम हैंडलर के लिए पारित त्रुटि होने की बजाय:

enter image description here

+5

मेरे लिए काम करता है। हो सकता है कि आपके पास टूल्स >> विकल्प >> सामान्य टैब –

+0

के तहत वीबीई में सेट की गई सभी त्रुटियों को तोड़ दें "यही वह था। धन्यवाद टिम। – Lokerim

उत्तर

6

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

enter image description here

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

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