अनुप्रयोगों के लिए विजुअल बेसिक (वीबीए) माइक्रोसॉफ्ट द्वारा विकसित विजुअल बेसिक प्रोग्रामिंग भाषा का कार्यान्वयन है। वीबीए का उपयोग यूडीएफ को सक्षम करने, कार्यों को स्वचालित करने और डीएलएल के माध्यम से विनएपीआई तक पहुंचने के लिए किया जा सकता है। हालाँकि, हाल ही में, बहुत सी रिपोर्टें आ रही हैं जहाँ उपयोगकर्ता कुछ आदेशों को निष्पादित करने में असमर्थ हैं और एक "सब्सक्राइब आउट ऑफ़ रेंज, एरर 9 ऐसा करने का प्रयास करते समय पॉप अप हो जाता है।
VBA में "सबस्क्रिप्ट आउट ऑफ़ रेंज" त्रुटि का क्या कारण है?
कई उपयोगकर्ताओं से कई रिपोर्ट प्राप्त करने के बाद, हमने इस मुद्दे की जांच करने का फैसला किया और इसे पूरी तरह से ठीक करने के लिए समाधानों का एक सेट तैयार किया। साथ ही, हमने इसके ट्रिगर होने के कारणों पर गौर किया और उन्हें इस प्रकार सूचीबद्ध किया।
- गैर-मौजूद तत्व: कुछ मामलों में, यह संभव है कि आपने कमांड में किसी ऐसे तत्व का संदर्भ दिया हो जो मौजूद नहीं है। यह संभव है कि सबस्क्रिप्ट या तो संभावित सबस्क्रिप्ट की सीमा से बड़ा या छोटा हो या एप्लिकेशन में इस बिंदु पर आयाम को ऐरे को असाइन नहीं किया गया हो।
- अपरिभाषित तत्व: यह संभव है कि आपने अपने कोड में तत्वों की संख्या की पहचान नहीं की हो, यह महत्वपूर्ण है कि किसी सरणी में तत्वों की संख्या को "Dim" या "ReDim" कमांड का उपयोग करके परिभाषित किया जाए।
- गलत संग्रह सदस्य: कुछ मामलों में, उपयोगकर्ता ने ऐसे संग्रह सदस्य का संदर्भ दिया होगा जो मौजूद नहीं है। यदि संग्रह सदस्य के प्रति गलत संदर्भ दिया जाता है, तो यह त्रुटि ट्रिगर हो सकती है।
- शॉर्टहैंड स्क्रिप्ट: यह संभव है कि आपने सबस्क्रिप्ट के शॉर्टहैंड फॉर्म का उपयोग किया हो और यह स्पष्ट रूप से एक ऐसा तत्व निर्दिष्ट करता हो जो अमान्य था। एक मान्य कुंजी नाम का उपयोग करना महत्वपूर्ण है।
अब जब आपको समस्या की प्रकृति की बुनियादी समझ हो गई है, तो हम समाधान की ओर बढ़ेंगे। विरोध से बचने के लिए इन्हें उस विशिष्ट क्रम में लागू करना सुनिश्चित करें जिसमें उन्हें प्रस्तुत किया गया है।
समाधान 1:सरणियों की जाँच करना
यह संभव है कि आपने ऐरे तत्व के लिए गलत मान परिभाषित किया हो। इसलिए, यह अनुशंसा की जाती है कि आप ऐरे तत्व के लिए परिभाषित मान को दोबारा जांचें और सुनिश्चित करें कि यह सही है। साथ ही, सुनिश्चित करें कि आप सरणी की घोषणा की जांच करते हैं और सत्यापित करें ऊपरी और निचली सीमा। यदि सरणियों को फिर से आयाम दिया गया है, तो LBound . का उपयोग करना सुनिश्चित करें और उबाउंड कंडीशन एक्सेस के लिए कार्य करता है। यदि सूचकांक एक चर है, तो चर नाम की वर्तनी की जाँच करें।
समाधान 2:तत्वों की संख्या निर्दिष्ट करना
कुछ मामलों में, हो सकता है कि आपने अपने कोड में उन तत्वों की संख्या को परिभाषित न किया हो जिसके कारण त्रुटि हो रही है। यह अनुशंसा की जाती है कि आप मंद . का उपयोग करके सरणी में तत्वों की संख्या निर्दिष्ट करें या रीडिम कार्य।
समाधान 3:संरचना बदलना
यह त्रुटि आमतौर पर तब ट्रिगर होती है जब उपयोगकर्ता गलत या गैर-मौजूद संग्रह सदस्य निर्दिष्ट करता है। इसलिए, अनुक्रमणिका तत्वों को निर्दिष्ट करने के बजाय, यह अनुशंसा की जाती है कि आप "प्रत्येक के लिए…अगला के साथ संपर्क करें। "निर्माण।
समाधान 4:Keyname और Index की जाँच करना
कुछ मामलों में, यह संभव है कि आपने सबस्क्रिप्ट के शॉर्टहैंड फॉर्म का उपयोग किया हो और यह एक अमान्य तत्व को निर्दिष्ट करता हो। इसलिए, यह अनुशंसा की जाती है कि आप वैध कुंजी . का उपयोग करें नाम और सूचकांक संग्रह के लिए।