VBA सब्सक्रिप्शन आउट ऑफ़ रेंज (रन-टाइम एरर '9') - यह त्रुटि क्यों हुई?

एक्सेल VBA सदस्यता सीमा से बाहर

सीमा से बाहर सदस्यता एक त्रुटि है जो हम VBA में सामना करते हैं जब हम किसी चीज या एक चर को संदर्भित करने का प्रयास करते हैं जो कोड में मौजूद नहीं होता है, उदाहरण के लिए, मान लें कि हमारे पास x नाम का एक चर नहीं है लेकिन हम x पर msgbox फ़ंक्शन का उपयोग करते हैं सीमा त्रुटि से सबस्क्रिप्ट का सामना करेगा।

VBA सबस्क्रिप्ट आउट ऑफ़ सीमा त्रुटि इसलिए होती है क्योंकि जिस ऑब्जेक्ट को हम एक्सेस करने का प्रयास कर रहे हैं वह मौजूद नहीं है। यह VBA कोडिंग में एक त्रुटि प्रकार है, और यह एक "रन टाइम त्रुटि 9" है। कुशल कोड लिखने के लिए अवधारणाओं को समझना महत्वपूर्ण है, और कोड को कुशलतापूर्वक डिबग करने के लिए अपने VBA कोड की त्रुटि को समझना और भी अधिक महत्वपूर्ण है।

यदि आपकी कोडिंग त्रुटि है और आपको पता नहीं है कि जब आप गए हैं तो वह त्रुटि क्या है।

एक डॉक्टर अपने मरीज को यह बताए बिना दवा नहीं दे सकता कि बीमारी क्या है। निश्चित रूप से, डॉक्टर और मरीज दोनों जानते हैं कि कोई बीमारी (त्रुटि) है, लेकिन यह दवा देने से ज्यादा बीमारी (त्रुटि) को समझना जरूरी है। यदि आप त्रुटि को पूरी तरह से समझ सकते हैं, तो समाधान खोजना बहुत आसान है।

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

Excel VBA में सीमा त्रुटि से सब्सक्रिप्शन क्या है?

उदाहरण के लिए, यदि आप उस शीट का जिक्र कर रहे हैं जो वर्कबुक नहीं है, तो हमें रन टाइम एरर 9 मिलता है : "सब्सक्रिप्शन आउट ऑफ रेंज।"

यदि आप एंड बटन पर क्लिक करते हैं, तो यह उपप्रकार को समाप्त कर देगा, यदि आप डिबग पर क्लिक करते हैं, तो यह आपको कोड की पंक्ति में ले जाएगा जहां यह एक त्रुटि का सामना करना पड़ा, और मदद आपको Microsoft वेबसाइट पेज पर ले जाएगी।

क्यों सीमा से बाहर त्रुटि होती है?

जैसा कि मैंने दवा के बारे में सोचने से पहले मृतक को खोजने के लिए एक डॉक्टर के रूप में महत्वपूर्ण बताया। VBA सबस्क्रिप्ट आउट ऑफ़ सीमा त्रुटि तब होती है जब कोड की लाइन हमारे द्वारा दर्ज की गई वस्तु को नहीं पढ़ती है।

उदाहरण के लिए, नीचे दी गई छवि देखें। मेरे पास Sheet1, Sheet2, Sheet3 नाम की तीन शीट हैं।

अब कोड में, मैंने "बिक्री" शीट का चयन करने के लिए कोड लिखा है।

कोड:

उप Macro2 () पत्रक ("बिक्री")। अंत उप चुनें

अगर मैं F5 कुंजी या मैन्युअल का उपयोग करके इस कोड को चलाता हूं, तो मैं रन टाइम त्रुटि 9 प्राप्त करूंगा : "सीमा से बाहर सदस्यता।"

ऐसा इसलिए है क्योंकि मैंने वर्कशीट ऑब्जेक्ट "सेल्स" तक पहुंचने की कोशिश की है, जो वर्कबुक में मौजूद नहीं है। यह एक रन टाइम त्रुटि है क्योंकि यह त्रुटि कोड चलाते समय हुई थी।

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

कोड:

उप मैक्रो 1 () डिम डब्ल्यूबी बतौर वर्कबुक सेट डब्लूबी = वर्कबुक ("सैलरी शीट.एक्सएलएक्स") एंड सब

उपरोक्त कोड कहता है कि चर WB कार्यपुस्तिका के समान होना चाहिए "वेतन पत्रक। xlsx।" अब तक, यह कार्यपुस्तिका मेरे कंप्यूटर पर नहीं खोली गई है। अगर मैं इस कोड को मैन्युअल रूप से या F5 कुंजी के माध्यम से चलाता हूं, तो मुझे रन टाइम एरर 9 मिलेगा : "सब्सक्रिप्शन आउट ऑफ रेंज"।

यह उस कार्यपुस्तिका के कारण है जिसका मैं उल्लेख कर रहा हूं, जो या तो अब तक खुली नहीं है या बिल्कुल मौजूद नहीं है।

VBA सदस्यता त्रुटि एरर्स में

जब आप सरणी को डायनेमिक सरणी के रूप में घोषित करते हैं, और यदि आप किसी सरणी की लंबाई को परिभाषित करने के लिए VBA में DIM या REDIM शब्द का उपयोग नहीं करते हैं, तो हम आमतौर पर VBA सबस्क्रिप्ट को सीमा त्रुटि से बाहर निकालते हैं। उदाहरण के लिए, नीचे दिए गए कोड को देखें।

कोड:

सब मैक्रो 3 () मंद माइअरे () लॉन्ग मायरायर (1) = 25 एंड सब

उपरोक्त में, मैंने चर को एक सरणी के रूप में घोषित किया है, लेकिन मैंने एक शुरुआत और समाप्ति बिंदु नहीं सौंपा है; बल्कि, मैंने सीधे पहले सरणी को 25 का मान दिया है।

अगर मैं इस कोड को F5 कुंजी या मैन्युअल रूप से उपयोग करता हूं, तो हमें रन टाइम एरर 9 मिलेगा : "सब्सक्रिप्शन आउट ऑफ रेंज।"

इस समस्या को ठीक करने के लिए, मुझे Redim शब्द का उपयोग करके एक सरणी की लंबाई निर्दिष्ट करने की आवश्यकता है।

कोड:

सब मैक्रो 3 () डिम मायर्रे () लॉन्ग रिडिम मायरे के रूप में (1 से 5) मायएयर्रे (1) = 25 अंत उप

यह कोड कोई त्रुटि नहीं देता है।

VBA कोड के अंत में त्रुटियां कैसे दिखाएं?

यदि आप कोड को चालू करने और चलाने के दौरान त्रुटि नहीं देखना चाहते हैं, लेकिन अंत में त्रुटि सूची की आवश्यकता है, तो आपको "त्रुटि को फिर से शुरू करें" त्रुटि हैंडलर का उपयोग करने की आवश्यकता है। नीचे दिए गए कोड को देखें।

कोड:

सब मैक्रो 1 () डिम डब्ल्यूबी एज़ वर्कबुक ऑन एरर रिज्यूमे फिर से सेट करें डब्ल्यूबी = वर्कबुक्स ("सैलरी शीट.एक्सएलएक्स") मिसगॉक्स एरर.डाइसक्रिप्शन एंड सब

जैसा कि हमने देखा है, यह कोड रन टाइम एरर 9 को फेंक देगा : “ एक्सेल VBA में रेंज से सब्सक्रिप्शन बाहर लेकिन मुझे कोड चलाते समय VBA में त्रुटि हैंडलर ऑन एरर रिज्यूमे नेक्स्ट का उपयोग करना होगा। हमें कोई त्रुटि संदेश नहीं मिलेगा। बल्कि अंत संदेश बॉक्स में मुझे इस तरह त्रुटि विवरण दिखाता है।

आप यहाँ एक्सेल वीबीए सबस्क्रिप्ट आउट ऑफ़ रेंज टेम्पलेट डाउनलोड कर सकते हैं: - वीबीए सबस्क्रिप्ट आउट ऑफ़ रेंज टेम्प्लेट

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