2012-10-08 15 views
10

मेरे पास एक्सेल वर्कशीट है जहां एक बटन से जुड़ा मैक्रो वर्कशीट में उपयोगकर्ता इनपुट पैरामीटर के आधार पर गतिशील आकार खींचता है।फॉर्म नियंत्रण को छोड़कर एक्सेल वर्कशीट में सभी आकार हटाएं

मैं चादर को साफ करने के लिए एक नया मैक्रो लिखने की कोशिश कर रहा हूं, या दूसरे शब्दों में वर्कशीट में सभी आकारों को हटा देता हूं।

मैंने नीचे दिए गए कोड का उपयोग करने की कोशिश की, और यह वास्तव में सभी आकारों को हटा देता है, हालांकि प्रक्रिया में बटन फॉर्म नियंत्रण भी हटा दिए जाते हैं। वर्कशीट में केवल आकृतियों (तीर, टेक्स्टबॉक्स, इलिप्स इत्यादि) से छुटकारा पाने का कोई आसान तरीका है? बहुत बहुत धन्यवाद!!!

Sub DeleteAllShapes() 

Dim Shp As Shape 

For Each Shp In ActiveSheet.Shapes 
    Shp.Delete 
Next Shp 

End Sub 

उत्तर

15

को हटाने के लिए स्वत: आकृतियाँ और बक्सें केवल आप का उपयोग कर सकते हैं:

Sub DeleteAllShapes() 

Dim Shp As Shape 

For Each Shp In ActiveSheet.Shapes 
    If Shp.Type = msoAutoShape Or Shp.Type = msoTextBox Then Shp.Delete 
Next Shp 

End Sub 

वैकल्पिक रूप से आप दूसरी तरह के आसपास काम करते हैं और प्रकार को हटाने के लिए नहीं निर्दिष्ट कर सकते हैं। आप गणित प्रकारों का उपयोग कर सकते हैं लेकिन यह प्रकार के नामों का उपयोग करने के लिए और अधिक पठनीय है। निम्नलिखित स्निपेट फॉर्म नियंत्रण और ओएलई नियंत्रण वस्तुओं के अलावा सबकुछ हटा देगा।

Sub DeleteAllShapes() 

Dim Shp As Shape 

For Each Shp In ActiveSheet.Shapes 
    If Not (Shp.Type = msoOLEControlObject Or Shp.Type = msoFormControl) Then Shp.Delete 
Next Shp 

End Sub 

एमएसओ आकार प्रकारों की एक पूरी सूची। http://msdn.microsoft.com/en-us/library/office/aa432678(v=office.12).aspx

रॉन डी ब्रुइन में स्निपेट का एक अच्छा संग्रह है जो इस प्रश्न में आने वाले किसी और के लिए प्रासंगिक हो सकता है। http://www.rondebruin.nl/controlsobjectsworksheet.htm

+0

दुर्भाग्यवश यह काम नहीं करता है: 1. जब मैं अपना पहला कोड निष्पादित करता हूं तो फॉर्म नियंत्रण हटा दिया जाता है। 2. दूसरा एक बेहतर काम करता है: यह आकृतियों को हटा देता है और अकेले नियंत्रण नियंत्रण छोड़ देता है। हालांकि, इस बार "टेक्स्ट बॉक्स" हटाए नहीं गए हैं। मैं लगभग निश्चित हूं कि एक लाइनर कोड था जो चाल करता है, लेकिन मुझे याद नहीं है। – marillion

+0

आपके पास किस प्रकार के फॉर्म नियंत्रण हैं? मैंने अभी इसे ActiveX नियंत्रण चेकबॉक्स और फॉर्म कंट्रोल बटन पर (दूसरा वाला) परीक्षण किया है और यह ठीक काम करता है। –

+0

क्षमा करें, मैंने आपका दूसरा बार देखा था जब मैंने आपकी टिप्पणी संपादित की थी। जैसा कि आपने कहा था, दूसरा कोड फॉर्म नियंत्रण को स्पर्श नहीं करता है, जो कि सही है। हालांकि, यह किसी कारण से टेक्स्ट बॉक्स को हटा नहीं देता है। – marillion

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