2008-09-27 10 views
6

मेरा मैक्रो संख्याओं के साथ एक बड़ी स्प्रेडशीट अपडेट करता है, लेकिन यह बहुत धीरे-धीरे चलता है क्योंकि एक्सेल परिणाम की प्रतिपादन करता है क्योंकि यह इसकी गणना करता है। मैक्रो पूरा होने तक आउटपुट को प्रस्तुत करने से एक्सेल को कैसे रोकूं?एक्सेल को स्प्रेडशीट को प्रस्तुत करने से कैसे रोकूं क्योंकि मेरा मैक्रो इसकी गणना करता है?

उत्तर

14

मैं प्रस्तावित समाधान के दोनों का उपयोग करें:

Application.ScreenUpdating = False 
Application.Calculation = xlCalculationManual 
... 
... 
... 
Application.Calculation = xlCalculationAutomatic 
Application.ScreenUpdating = True 
0

आप विकल्प संवाद में स्वचालित गणना बंद कर सकते हैं, यह इसे सेट करता है ताकि जब आप F9 दबाते हैं तो यह केवल गणना करता है।

+0

मेरी मैक्रो केवल तब चलता है जब मैं इसे अमल तो मैं इस संबंध में मुझे कोई आपत्ति नहीं है, लेकिन मैं डेटा (जो कि वृहद द्वारा निर्दिष्ट) के आसपास एक्सेल नकल को देखने के लिए नहीं करना चाहते, केवल अंतिम परिणाम – Oskar

2

Application.ScreenUpdating = झूठी

और निश्चित रूप से इसे वापस सही पर सेट फिर से जब तुम, इसे पूरा कर लें, भले ही एक त्रुटि उठाया है। उदाहरण:

Public Sub MyMacro 
    On Error GoTo ErrHandler 
    Application.ScreenUpdating = False 
    ... do my stuff that might raise an error 
    Application.ScreenUpdating = True 
    Exit Sub 
ErrHandler: 
    Application.ScreenUpdating = True 
    ... Do something with the error, e.g. MsgBox  
End Sub 
+0

मैं कैसे सुनिश्चित करूं कि मैं इसे त्रुटि के बाद वापस प्राप्त करूं? – Oskar

+0

मैंने इसे दिखाने के लिए एक उदाहरण जोड़ा। – Joe

1

जो और द्रष्टा पर बिल्डिंग (इस पुराने सिंटैक्स का उपयोग करता है, तो यह ऑफिस 2000 की VBA के साथ संगत है):

On Error Goto AfterCalculation 
Application.ScreenUpdating = False 
Application.Calculation = xlCalculationManual 
... 

AfterCalculation: 
Application.Calculation = xlCalculationAutomatic 
Application.ScreenUpdating = True 
2

मैं प्रस्तावित समाधान, दोनों का उपयोग करना पसंद करता हूं लेकिन उपयोगकर्ताओं को पिछली गणना मोड भी रखता हूं।

इस विशेष आवेदन के लिए यह कोई बड़ी बात नहीं हो सकता है, लेकिन यह आमतौर पर उपयोगकर्ताओं को अपने सेटिंग पुनर्स्थापित अपने प्रक्रिया समाप्त हो गया है के बाद जाने के लिए सबसे अच्छा अभ्यास है:

Application.ScreenUpdating = False 
PreviousCalcMode = Application.Calculation 
Application.Calculation = xlCalculationManual 
    ... 
    ... 
    ... 
Application.Calculation = PreviousCalcMode 
Application.ScreenUpdating = True 

एनबी। एप्लिकेशन पर चालू होने वाली कुछ त्रुटि हैंडलिंग को सम्मिलित करने के लिए आपके समय के लायक भी होंगे। स्क्रीन अपडेट करने से आपके अन्यथा शानदार कोड में त्रुटि होनी चाहिए;) यदि स्मृति मुझे सही सेवा देती है, तो ExcelUpdating = false के दौरान Excel कोई त्रुटि संदेश नहीं दिखाएगा। कुछ इस तरह:

Sub DoSomeThing 


On Error Goto DisplayError 

Application.ScreenUpdating = False 
PreviousCalcMode = Application.Calculation 
Application.Calculation = xlCalculationManual 
    ... 
    ... 
    ... 
Application.Calculation = PreviousCalcMode 
Application.ScreenUpdating = True 

Exit Sub 

DisplayError: 
Application.Calculation = PreviousCalcMode 
Application.ScreenUpdating = True 

MsgBox Err.Description 
End 'This stops execution of macro, in some macros this might not be what you want' 
    '(i.e you might want to close files etc)' 
End Sub 
संबंधित मुद्दे