में वर्कशीट बनाना और नामकरण करना मेरे पास कुछ बहुत ही सरल कोड है जो वर्तमान वर्कशीट के बाद, एक एक्सेल दस्तावेज़ में एक नई वर्कशीट जोड़ता है, और उसके बाद उपयोगकर्ता नाम पर टेक्स्ट बॉक्स में दर्ज किए गए एक को अपना नाम बदल देता है। एक नई कार्यपुस्तिका पर ठीक काम करता है, हालांकि एक कार्यपुस्तिका में जिसमें कई मौजूदा वर्कशीट हैं, यह नई वर्कशीट बनाता है, लेकिन इसका नाम नहीं बदलता है।एक्सेल वीबीए
यह पहली बार होता है जब आप इस कोड को चलाते हैं, अगली बार यह ठीक चल जाएगा। यह चीज जो इसे अजनबी बनाती है वह यह है कि यदि आप वीबीए संपादक को खोलने और डीबग करने के लिए खोलते हैं, तो यह ठीक से चलता है। यह स्पष्ट रूप से त्रुटि को बहुत मुश्किल बनाता है।
कोड मैं उपयोग कर रहा हूँ यहाँ है:
Dim WS As Worksheet
Set WS = Sheets.Add(After:=Sheets(Worksheets.count))
WS.name = txtSheetName.value
सुंदर सरल
। मैं सोच रहा हूं कि क्या यह समस्या यह है कि यह सही ढंग से बनाए जाने से पहले शीट का नाम बदलने का प्रयास कर रहा है? क्या इस कोड को लिखने का कोई बेहतर तरीका है?
अद्यतन: मैं इस msgboxes का उपयोग कर डिबगिंग शुरू कर दिया है, के रूप में डिबगर खोलने समस्या बंद है, और यह आधे रास्ते के माध्यम से यह सिर्फ कोड प्रसंस्करण बंद हो जाता है कि लगता है:
Dim WS As Worksheet
MsgBox (WS Is Nothing)
Set WS = Sheets.Add(After:=Sheets(Worksheets.count))
'***** Nothing after this point gets processed *******
MsgBox (WS Is Nothing)
MsgBox WS.name
WS.name = txtSheetName.value
MsgBox WS.name
एक्सेल के पास आपको खुश रखने के कई तरीके हैं।अक्सर आप इसके बारे में कुछ भी नहीं कर सकते हैं। विभिन्न अपेक्षाकृत बेकार चीज़ों को आजमाएं, जैसे 'शीट्स' के बजाय 'वर्कशीट्स' संग्रह का उपयोग करना या पहले स्ट्रिंग वैरिएबल में 'txtSheetName.value' असाइन करना। – GSerg
ऐसा लगता है कि आप txtSheetName में नाम से पहले नाम सेट कर रहे हैं। क्या आप इस कोड को txtSheetName_Change ईवेंट से बंद कर रहे हैं? यदि नहीं, तो यह शायद समस्या को ठीक करेगा। –
@Marc ईवेंट एक बटन ईवेंट से चलाया जाता है, जो मान्य करता है कि टेक्स्ट बॉक्स –