2012-10-02 13 views
5
Set mainWB = Workbooks("Copy Paste.xlsb") 
Set mainWS = mainWB.Sheets("Sheet1") 
Set testWS = mainWB.Sheets("Sheet3") 

mainWS.Select 

मैं Excel VBA में अंतिम पंक्ति पर एक त्रुटि मिलती रहती है:ऑब्जेक्ट '_ वर्कशीट' का विधि चयन विफल - क्यों?

"ऑब्जेक्ट की विधि चुनें '_Worksheet' विफल"

किसी भी विचार क्यों या कैसे इसे ठीक करने के लिए? धन्यवाद!

+0

पर सेट किया जाता है? क्या कार्यपुस्तिका वही है? – enderland

+1

'mainWB 'सक्रिय है? –

+2

और इसलिए 'चयन करें' से बचा जाना चाहिए :) इस लिंक को देखें http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using- चयन करें –

उत्तर

6

टिप्पणियों में चर्चा के अनुसार, वीबीए में Sheets का चयन नहीं कर सकता जो सक्रिय नहीं है (या Range ऑब्जेक्ट्स उन पर ऑब्जेक्ट्स)।

उदाहरण के लिए कोड

Sheets(1).Activate 
Sheets(2).Range("A1").Select 

आपको जो समस्या आ रहे हैं कारण होगा निम्नलिखित।

आपके मामले में, यह आप Select एक चादर जो सक्रिय नहीं है करने के लिए प्रयास कर रहे हैं लगता है - अपने mainWS वस्तु शायद बिंदु आप इस कोड को बुला रहे हैं पर ActiveSheet नहीं है।

if (ActiveSheet.Name <> mainWS.Name) then 
    msgbox ("Going to crash after clicking ok!") 
end if 
mainWS.Select 

ध्यान दें कि आप आदेश ActiveSheet के साथ सक्रिय कार्यपत्रक का उल्लेख या तो गुण या जो कुछ भी अन्य कार्यों प्राप्त करने के लिए कर सकते हैं: एक आसान तरीका है, तो यह हो रहा है परीक्षण करने के लिए अगर आप अपने कोड के अंत में निम्नलिखित जोड़ना है आप करने में रुचि रखते हैं।

यह त्रुटि तब भी हो सकती है जब आपके पास कार्यपुस्तिका में सभी कार्यपत्रकों के माध्यम से लूप काम कर रहा हो और छिपी चादरें हों। उस के लिए देखो। नहीं तो मैं Option Explicit उपयोग करने पर विचार के रूप में आप अक्सर मुद्दों के सभी प्रकार में चला सकते हैं -


अंतिम, और अपने विशिष्ट त्रुटि संदेश से संबंधित नहीं है, मैं तुम्हें कहीं वे चर घोषित कर रहे हैं और सिर्फ उन्हें यहाँ कॉपी नहीं किया ग्रहण अपने वीबीए कोड के शीर्ष पर Option Explicit के बिना।

+0

उत्कृष्ट जवाब। ज्ञान और प्रस्तुति पर बधाई। – NoChance

+0

@NoChance दयालु शब्दों के लिए धन्यवाद। – enderland

1

जब मैं ऊपर से सहमत है, यह भी महत्वपूर्ण है कि हटाएं समारोह काम नहीं करेगा यदि कार्यपत्रक की दृश्यता वर्तमान में आपके शीट वास्तव में sheet1/पत्रक 3 नाम हैं xlSheetVeryHidden

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