2008-09-30 10 views
39

एक्सेल में स्प्रैडशीट डेटा को आप VBA के भीतर से पुनः प्राप्त करने के लिए कैसे प्राप्त करते हैं, केवल सेल मान को बदलने के क्लाउज के बिना?एक्सेल को वीबीए के भीतर से शीट पर डेटा रीफ्रेश करने के लिए कैसे मिलता है?

उत्तर

49

निम्नलिखित लाइनों चाल करना होगा:

ActiveSheet.EnableCalculation = False 
ActiveSheet.EnableCalculation = True 

संपादित करें: .Calculate() विधि सभी कार्यों के लिए काम नहीं करेगा, मैं यह ऐड-इन सरणी कार्यों के साथ एक पत्रक पर परीक्षण किया गया। मैं जिस उत्पादन शीट का उपयोग कर रहा हूं वह काफी जटिल है, मैं कोशिश नहीं करना चाहता हूं। CculculateFull() विधि, इसलिए यह काम कर सकता है।

+1

वास्तव में, वहाँ .Calculate() और .CalculateFull (हैं) इसके लिए, विभिन्न स्तरों पर तरीकों। – GSerg

+1

मैंने परीक्षण किया है एक चादर पर गणना, और यह एक सेल पुनर्मूल्यांकन में सभी कार्यों नहीं है। आप इसे 'गंदे' बिट को स्विच करके भी कर सकते हैं, लेकिन मुझे यह सबसे आसान समाधान माना गया। –

+0

'EnableCalculation' प्रॉपर्टी का उपयोग करना एक अच्छा विचार है, क्योंकि यह वर्कशीट स्तर पर एक शीट को फिर से गणना करने की अनुमति देता है। इसके विपरीत, 'Application.CalculateFull' न केवल एक वर्कशीट या वर्कबुक में, सभी डेटा की पूरी गणना करता है, लेकिन ** सभी खुली कार्यपुस्तिकाओं ** में! यह बड़ी ओवरकिल हो सकती है, खासकर जब उपयोगकर्ता कई असंबंधित, संभावित रूप से जटिल, कार्यपुस्तिकाएं खोल सकता है। – ricovox

14

इस चाल करना चाहिए ...

'recalculate all open workbooks 
Application.Calculate 

'recalculate a specific worksheet 
Worksheets(1).Calculate 

' recalculate a specific range 
Worksheets(1).Columns(1).Calculate 
+1

मेरे उत्तर पर टिप्पणी देखें –

3

तुम भी

Application.CalculateFull 

या

Application.CalculateFullRebuild 

यदि आप सभी खुले कार्यपुस्तिका के पुनर्निर्माण कोई आपत्ति नहीं है, बल्कि कोशिश कर सकते हैं केवल सक्रिय वर्कशीट की तुलना में। (CalculateFullRebuild निर्भरता के रूप में अच्छी तरह से पुनर्निर्माण।)

6

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

सुनिश्चित करें कि आप है कि निम्न स्क्रिप्ट

ActiveSheet.EnableCalculation = True 

पसंद का समीकरण फिर से लागू करें सुनिश्चित करें।

Cells(RowA,ColB).Formula = Cells(RowA,ColB).Formula 

इसे तब आवश्यकतानुसार लूप किया जा सकता है।

2

मैं VBA में एक पृष्ठभूमि छवि (एक मसौदा वॉटरमार्क) को बंद करने के साथ एक समस्या हुई। मेरा परिवर्तन नहीं दिख रहा था (जिसे Sheets(1).PageSetup.CenterHeader = "" विधि के साथ किया गया था) - इसलिए मुझे रीफ्रेश करने का एक तरीका चाहिए। ActiveSheet.EnableCalculation दृष्टिकोण ने आंशिक रूप से चाल की, लेकिन अप्रयुक्त कोशिकाओं को शामिल नहीं किया।

अंत मैंने पाया कि मैं एक एक लाइनर जब यह नहीं रह गया है स्थापित किया गया था कि छवि से गायब हो गए साथ जो चाहते हैं उसे में: -

Application.ScreenUpdating = True

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