बग जब VBA में चिपकाने वाले सत्यापन - एक्सेल टिप्स

विषय - सूची

यदि आपने Microsoft Excel के लिए VBA और मैक्रोज़ के पहले कुछ अध्याय पढ़े हैं, तो आप जानते हैं कि मुझे शिकायत है कि Excel मैक्रो रिकॉर्डर उपयोग करने योग्य कोड को रिकॉर्ड करने का सबसे बड़ा काम नहीं करता है। आमतौर पर, कोड ठीक काम करता है, लेकिन इसे इस तरह से रिकॉर्ड किया जाता है कि यह विभिन्न आकार के डेटासेट के लिए उपयोगी नहीं हो सकता है। कोड आज ठीक काम कर सकता है, लेकिन कल नहीं।

मैं एक बहुत ही अजीब समस्या में भाग गया, जहां मैक्रो रिकॉर्डर ने वास्तव में कोड दर्ज किया जो काम नहीं करता था। मैं एक मैक्रो लिख रहा था जिसने सत्यापन को एक सेल से कोशिकाओं की एक सीमा तक कॉपी करने की कोशिश की। Excel 2002 में, यह कोड इस प्रकार था:

Range(“E5”).Copy Range(“E6:E12”).PasteSpecial Paste:=xlPasteValidation

इस कोड ने Excel 2002 में ठीक काम किया, लेकिन Excel 2000 के साथ क्लाइंट की मशीन पर विफल रहा। कार्यालय के पुराने कंप्यूटरों में से एक में अभी भी Excel 2000 है, इसलिए मैंने वहां कोड की कोशिश की। समस्या xlPasteValidation के साथ थी। जब भी मैं कुछ असामान्य में दौड़ता हूं, तो मैक्रो रिकॉर्डर शुरू करता हूं यह देखने के लिए कि मैक्रो रिकॉर्डर कोड को कैसे रिकॉर्ड करेगा। मैंने E5 में सत्यापन सेट किया, मैक्रो रिकॉर्डर चालू किया, E5 की नकल की और पेस्ट स्पेशल - वैलिडेशन का उपयोग किया। मैक्रो रिकॉर्डर को रोकने के बाद, मैंने ध्यान दिया कि एक्सेल 2000 ने इस प्रकार दर्ज किया:

Range(“E6:E12”).PasteSpecial Paste:=xlDataValidation

इसलिए, मैं क्लाइंट एप्लिकेशन पर गया, कोड को xlDataValidation में बदल दिया और इसे फिर से चलाया। अजीब बात है, यह एक ही त्रुटि का उत्पादन किया!

यह पता चलता है कि एक्सेल 2000 मैक्रो रिकॉर्डर वास्तव में एक बग है। यह xlDataValidation स्थिरांक को रिकॉर्ड करेगा, लेकिन मैक्रो दुभाषिया न तो xlDataValidation और न ही xlPasteValidation को मान्यता देगा। एक्सेल VBA एक्सेल 2000 में मदद करता है जैसे कि सिर्फ मान्यता को चिपकाने का कोई तरीका नहीं है।

यह काम करने के लिए, आपको xlPasteValidation के अंतर्निहित मूल्य की खोज करने की आवश्यकता है। मेरे XL2002 मशीन पर, मैं VBA संपादक के पास गया। तत्काल विंडो खोलने के लिए Ctrl + G टाइप करें और इसे तत्काल फलक में टाइप करें:

Print xlPasteValidation

हिट दर्ज करें और Excel 2002 आपको बताएगा कि xlPasteValidation "6" कहने का एक अनुकूल तरीका है। Excel 2000 मशीन पर वापस, मैंने इस कोड की कोशिश की:

Range(“E6:E12”).PasteSpecial Paste:=6

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

‘Bug in XL2000; need to use “6” instead of the constant Range(“E6:E12”).PasteSpecial Paste:=6

तो - आज छोटा सा पाठ एक्सेल 2000 में विशेष सत्यापन को कैसे पेस्ट किया जाए, इसकी बहुत विशिष्ट समस्या है, लेकिन बड़ा सबक यह पता लगाने के लिए आवश्यक है कि एक्सेल VBA में कुछ अजीब होने पर क्या हो रहा है।

दिलचस्प लेख...