2008-12-04 25 views
20

में पूर्ववत बिल्डिंग एक्सेल मैक्रोज़ उन्हें चलाने के बाद "पूर्ववत करें" के उपयोग की अनुमति नहीं देते हैं। एक्सेल में वीबीए मैक्रो में undo कार्यक्षमता को सेंकने का कोई तरीका है?एक्सेल वीबीए मैक्रो

उत्तर

21

एक्सेल VBA इस संभाल करने Application.OnUndo कार्य है:

Public Sub DoSomething 

    ... do stuff here 

    Application.OnUndo "Undo something", "UnDoSomething" 
End Sub 

Public Sub UnDoSomething 

    ... reverse the action here 

End Sub
+4

हालांकि यह पहले उप के कार्यों को पूर्ववत करने में मदद करेगा, दुर्भाग्यवश आप उपरोक्त क्रियाओं के "इतिहास" को खो देते हैं जो उप चलाने से पहले उपलब्ध हो सकते हैं। अगर कोई जानता है कि इस मुद्दे को कैसे हल किया जाए तो यह वास्तविक वरदान होगा। –

+0

@ एक्सेलसेल डेवलपर का मतलब है [यहां] (http://www.jkp-ads.com/Articles/UndoWithVBA00.asp) – Reafidy

3

मैं हमेशा अपने मैक्रोज़ (कम से कम परीक्षण के दौरान) चलाने से पहले तुरंत सहेजता हूं, अगर सब कुछ नाशपाती के आकार में जाता है, तो मैं इसे बिना सहेजे और फिर से खोलने के बाहर निकल सकता हूं।

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

उदाहरण के लिए अपने मैक्रो "3" के लिए "7" से एक सेल C22 सामग्री बदलता है और से "सामान्य" के लिए "संख्या, 2 दशमलव) स्वरूपण अगर, अपनी सूची में होगा:

C22 value 3 
C22 format general 

इस बजाना उलटे क्रम (एक और मैक्रो के साथ) में वापस परिवर्तन वापस होगा

आप एक पूरे के अतिरिक्त शीट मैक्रो धारण करने के लिए हो सकता है इस तरह के रूप में जानकारी पूर्ववत:।

Step Cell Type Value 
---- ---- ----- ------- 
    1 C22 value   3 
     C22 format general 
    2... 

यह एकीकृत नहीं होता दुर्भाग्यवश 'असली' पूर्ववत के साथ बहुत अच्छी तरह से, लेकिन मुझे नहीं लगता कि इसके आसपास कोई रास्ता है।

4

मेरे विचार, बहुत सरल है अपने मैक्रो में पहली पंक्ति एक बैकअप निर्देशिका में एक प्रतिलिपि सहेजने तो उस कार्यपुस्तिका बंद करने और मूल फिर से खोलना के रूप में। यदि आपको अपने मैक्रो रन के नतीजे पसंद नहीं हैं, तो सहेजी गई कार्यपुस्तिका को खींचें। इसे सरल रखें?

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