2012-09-06 13 views
5

में सक्रिय कार्यपुस्तिका का मूल्य निर्धारित करना अब मेरे कार्यपुस्तिका को इस तरह से स्थापित किया गया है, जहां कार्यपुस्तिका को सेट कमांड में हार्ड कोड किया गया है, मैं सोच रहा हूं कि ऐसा करने का कोई तरीका है तो मैं इसे प्राप्त कर सकता हूं जहां यह तरल पदार्थ है? तो कोई फर्क नहीं पड़ता कि यह कोड कहां है (किसी अन्य कार्यपुस्तिका में) कोड इसके नए परिवेश में अनुकूल होगा।एक्सेल वीबीए

क्या यह समझ में आता है?

नीचे जो मैं अब उपयोग कर रहा हूं, मैं इसे ActiveWorkbook के लिए करना चाहता हूं या इसके बजाय कुछ प्रकार का उपयोग किया जाना चाहिए। चूंकि यह कोड की शुरुआत में सेट किया जाएगा, मध्य में नहीं।

Set wbOOR = Application.Workbooks("Open Order Report.xlsm")

उत्तर

20

आप शायद के बाद Set wbOOR = ThisWorkbook

बस स्पष्ट करने के लिए कर रहे हैं

ThisWorkbook हमेशा कार्यपुस्तिका कोड

ActiveWorkbook में रहता कार्यपुस्तिका कि सक्रिय है के पास भेजेगा के पास भेजेगा

सावधान रहें कि आप कैसे हैं कई कार्यपुस्तिकाओं से निपटने के दौरान यह से। यह वास्तव में इस बात पर निर्भर करता है कि आप क्या हासिल करना चाहते हैं, जिसके लिए सबसे अच्छा विकल्प है।

+0

+1 अंतर को समझाने के लिए और कब और कहां सबसे उपयुक्त हो सकता है, खासकर क्योंकि ओपी थोड़ा अस्पष्ट है। –

+1

मैं उपयोगकर्ता जीयूआई घटनाओं को कैप्चर करने के अलावा व्यक्तिगत रूप से कभी भी 'ActiveWorkbook' का उपयोग नहीं करता हूं और फिर भी कोशिश करें और इससे बचें। – user3357963

+3

मैं सहमत हूं। मैं उन सभी कार्यपुस्तिकाओं को सेट करता हूं जिन्हें मुझे चर सेट करने की आवश्यकता होती है जैसे 'सेट wkbMain = यह वर्कबुक या वर्कबुक ("मुख्य")' 'wkbProcess = कार्यपुस्तिकाएं ("प्रक्रिया") सेट करें, फिर मैं उन्हें आवश्यकतानुसार संदर्भित करता हूं। यह पता लगाने का सबसे सुरक्षित तरीका है कि 'ActiveWorkbook' बालों वाली हो सकती है और कम से कम अपेक्षित होने पर कोड को यात्रा कर सकती है। –

2

यह सब है आप की जरूरत

Set wbOOR = ActiveWorkbook 
+0

मुझे लगता है कि ओयू है ... –

+0

क्या यह है? एक्सेल वीबीए के साथ अब तक जाने के बाद आप जानते हैं, मुझे चीजों को करने के कई तरीके हैं, ऐसा लगता है कि कभी-कभी मैं कभी-कभी सबसे सरल तरीकों को भूल जाता हूं। धन्यवाद! –

+0

अपना प्रश्न दोबारा पढ़ना मुझे यकीन नहीं है कि यह सक्रिय वर्कबुक या यह कार्यपुस्तिका है जिसके बाद आप हैं। –

0

इस प्रयास करें।

Dim Workbk as workbook 
Set Workbk = thisworkbook 

अब जो कुछ भी आप प्रोग्राम करते हैं वह केवल आपके युक्त मैक्रो कार्यपुस्तिका के लिए लागू होगा।