जब भी आप किसी सेल मान को अपडेट करते हैं, तो एक्सेल कार्यपुस्तिका की पुनर्गणना करने की प्रक्रिया से गुजरता है। एक्सेल के भीतर सीधे काम करते समय आप चाहते हैं कि यह 99.9% बार हो (अपवाद यह है कि यदि आप एक बहुत बड़ी कार्यपुस्तिका के साथ काम कर रहे हैं)। हालाँकि, यह वास्तव में आपके VBA कोड को धीमा कर सकता है। मैक्रोज़ की शुरुआत में अपनी गणनाओं को मैन्युअल पर सेट करना और मैक्रोज़ के अंत में गणनाओं को पुनर्स्थापित करना एक अच्छा अभ्यास है। यदि आपको कार्यपुस्तिका का पुनर्गणना करने की आवश्यकता है, तो आप मैन्युअल रूप से एक्सेल को गणना करने के लिए कह सकते हैं।
स्वचालित गणना बंद करें
आप मैक्रो के साथ स्वचालित गणना को xlmanual पर सेट करके बंद कर सकते हैं। वीबीए कोड के निम्नलिखित भाग का प्रयोग करें:
1 | आवेदन.गणना = xlमैनुअल |
स्वचालित गणनाओं को वापस चालू करें
xlAutomatic सेटिंग के साथ स्वचालित गणना को वापस चालू करने के लिए:
1 | आवेदन.गणना = xlस्वचालित |
मैं आपकी प्रक्रिया की शुरुआत में स्वचालित गणना को अक्षम करने और अंत में स्वचालित गणना को फिर से सक्षम करने की अनुशंसा करता हूं। यह इस तरह दिखेगा:
स्वचालित गणना मैक्रो उदाहरण अक्षम करें
12345678 | उप Auto_Calcs_Example ()आवेदन.गणना = xlमैनुअल'कुछ करोआवेदन.गणना = xlस्वचालितअंत उप |
मैनुअल गणना
जब स्वचालित गणना अक्षम हो जाती है, तो आप इसका उपयोग कर सकते हैं गणना एक्सेल को पुनर्गणना करने के लिए बाध्य करने का आदेश:
1 | गणना |
आप एक्सेल को केवल एक व्यक्तिगत वर्कशीट की पुनर्गणना करने के लिए भी कह सकते हैं:
1 | वर्कशीट्स ("शीट 1")। गणना करें |
आप VBA को केवल एक श्रेणी की पुनर्गणना करने के लिए भी कह सकते हैं (VBA गणना विधियों के बारे में हमारा लेख पढ़ने के लिए क्लिक करें)
यहां बताया गया है कि यह मैक्रो के अंदर कैसा दिख सकता है:
12345678910111213 | उप Auto_Calcs_Example_Manual_Calc ()आवेदन.गणना = xlमैनुअल'कुछ करो'Recalcगणना'और चीजें करें'आवेदन.गणना = xlस्वचालितअंत उप |
वीबीए सेटिंग्स - स्पीड अप कोड
यदि आपका लक्ष्य अपने कोड को गति देना है, तो आपको इन अन्य सेटिंग्स को समायोजित करने पर भी विचार करना चाहिए:
Screenupdating को अक्षम करने से गति में भारी अंतर आ सकता है:
1 | एप्लिकेशन.स्क्रीनअपडेटिंग = गलत |
स्टेटस बार को बंद करने से भी थोड़ा फर्क पड़ेगा:
1 | एप्लिकेशन। डिस्प्लेस्टैटसबार = गलत |
यदि आपकी कार्यपुस्तिका में ईवेंट हैं, तो आपको अपनी प्रक्रियाओं की शुरुआत में ईवेंट को अक्षम करना चाहिए (कोड को गति देने और अंतहीन लूप को रोकने के लिए!):
1 | आवेदन। सक्षम करें = गलत |
अंत में, आपका वीबीए कोड धीमा हो सकता है जब एक्सेल पेज ब्रेक की फिर से गणना करने का प्रयास करता है (नोट: सभी प्रक्रियाएं प्रभावित नहीं होंगी)। DisplayPageBreaks को बंद करने के लिए कोड की इस पंक्ति का उपयोग करें:
1 | ActiveSheet.DisplayPageBreaks = False |