2010-08-18 23 views
7

में फॉर्म बंद होने पर कोड निष्पादित करें जब मैं उपयोगकर्ता के विंडो के ऊपरी दाएं कोने में एक्स बटन का उपयोग करके एक फॉर्म बंद करता हूं तो कुछ कोड निष्पादित करना चाहता हूं (एक्सेल स्प्रैडशीट जब मेरे पास फॉर्म लोड होता है खोला गया है, और यह एक्सेल छुपाता है। फॉर्म बंद होने के बाद मैं एक्सेल से बाहर निकलना चाहता हूं, या कम से कम एक्सेल को फिर से दिखाना चाहता हूं ताकि उपयोगकर्ता मैन्युअल रूप से बाहर निकल सके)वीबीए (एक्सेल 2007)

फॉर्म गुणों को देखते हुए, अनलोड प्रॉपर्टी मौजूद नहीं है, और न ही मैं यह समझने में सक्षम हूं कि फ़ॉर्म को बंद करने के दौरान निष्पादित कार्य कैसे करें।

दुर्भाग्य से, वीबी में यह कोडिंग एक विकल्प नहीं है, यह वीबीए होना चाहिए।

मुझे एक्सेल को खोलने के लिए आवश्यक कोड से अवगत है या इसे सीधे छोड़ दें, बस इसे अनलोड ईवेंट से कैसे टाई जाए।

उत्तर

0

आप एक फॉर्म को बंद करने के लिए वीबीए में Unload Me का उपयोग कर सकते हैं। उसके बाद तुरंत एक्सेल को बंद करने के लिए कोड डालें।

+1

धन्यवाद, लेकिन कैसे यह मेरे लिए अनुमति नहीं है जब उपयोगकर्ता एक्स बटन पर क्लिक करता है तो कोड निष्पादित करें? शायद मैंने सवाल स्पष्ट नहीं किया है, अब मैं इसे संपादित कर दूंगा। – Pixotic

+0

ओह, मैं देखता हूं, मैं (गलत तरीके से) मानता हूं कि उपयोगकर्ता फॉर्म बटन के माध्यम से बाहर निकल रहा था, न कि विंडो पर एक्स बटन। – Michael

0

कुछ इस तरह की कोशिश: -

Private Sub Form1_FormClosing(sender as Object, e as FormClosingEventArgs) _ 
    Handles Form1.FormClosing 

    //Code you want to execute 

End Sub 
+0

एक त्रुटि फेंक दी, बता रहा है _ एक अवैध चरित्र है। – Pixotic

+0

एक फॉर्मक्लोसिंग ईवेंट होना चाहिए जिसे आप अपने फॉर्म के लिए चुन सकते हैं, जब आप स्रोत कोड देख रहे हों। यहां एक उदाहरण का एक लिंक दिया गया है: http://img385.imageshack.us/img385/3966/wat3am9.jpg – Daniel

+1

उपयोगकर्ताफॉर्म (एक्सेल वीबीए) में कोई फॉर्मक्लोज़िंग ईवेंट नहीं है। – Xdg

10

एक सहयोगी ने जवाब, जिसमें उदाहरण यहां अन्य सभी को

Private Sub userform_terminate() 

    'Code goes here 

End Sub 
+0

ध्यान दें कि फ़ॉर्म को छुपाते समय भी इसे निकाल दिया जाता है। यदि आप केवल दाएं कोने में बंद बटन (x) को कैप्चर करना चाहते हैं तो MRS1367 के उत्तर का उपयोग करें! – OfficialBAMM

9

आप के रूप में UserForm की QueryClose घटना का उपयोग कर सकते के लिए प्रदान करने में सक्षम था इस प्रकार है:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 
    If CloseMode = 0 Then 
     ' Your codes 
     ' Tip: If you want to prevent closing UserForm by Close (×) button in the right-top corner of the UserForm, just uncomment the following line: 
     ' Cancel = True 
    End If 
End Sub 

आप अल कर सकते हैं इसलिए इस तरह vbFormControlMenu का उपयोग करें:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 
    If CloseMode = vbFormControlMenu Then 
     'Your code goes here 
    End If 
End Sub 
0
Private Sub Form_Unload(Cancel As Integer) 
    Dim msgRes As VbMsgBoxResult 
    msgRes = MsgBox("Exit form ?", vbYesNo) 
    If msgRes = vbYes Then 
     'optional code 
    ElseIf msgRes = vbNo Then 
     Cancel = True 
    End If 
End Sub 
+0

यह स्पष्ट नहीं है कि यह प्रश्न का उत्तर कैसे प्रदान करता है। मूल समस्या और आपके विशेष समाधान को इंगित करने के लिए कृपया इस उत्तर पर विस्तार करें। – theMayer

0

मैं बंद करने से प्रपत्र को रोकने में सक्षम था जब एक्स बटन का उपयोग निम्नलिखित क्लिक था:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 
    Cancel = MsgBox("Please confirm cancellation", vbOKCancel + vbQuestion) = vbCancel 
End Sub 
संबंधित मुद्दे