Visual Basic for Applications (VBA) হলো Microsoft বিকশিত Visual Basic প্রোগ্রামিং ভাষার একটি বাস্তবায়ন। VBA ব্যবহার করা হয় UDF সক্ষম করতে, টাস্ক অটোমেট করতে এবং DLL-এর মাধ্যমে WinAPI অ্যাক্সেস করতে। যeseen, সম্প্রতি বেশ কিছু রিপোর্ট আসছে যেখানে ব্যবহারকারীরা নির্দিষ্ট কমান্ড এক্সিকিউট করতে পারছেন না এবং চেষ্টা করার সময় "Subscript Out of Range, Error 9" পপ আপ হয়।
VBA-এ "Subscript Out of Range" ত্রুটির কারণ কী?
বেশিসহ ব্যবহারকারীর রিপোর্ট পাওয়ার পর আমরা সমস্যাটি তদন্ত করলাম এবং এটি সম্পূর্ণ সমাধানের জন্য সমাধান সেট তৈরি করলাম। בנוסף, এটি ট্রিগার হওয়ার কারণগুলো তদন্ত করলাম এবং নিচে তালিকাভুক্ত করলাম।
- অস্তিত্বহীন এলিমেন্ট: কিছু কেসে, আপনি কমান্ডে এমন একটি এলিমেন্ট রেফারেন্স করতে পারেন যা অস্তিত্বে নেই। সাবস্ক্রিপ্টটি সম্ভাব্য সাবস্ক্রিপ্ট বা ডাইমেনশনগুলির রেঞ্জের চেয়ে বড় বা ছোট হতে পারে, অথবা অ্যাপ্লিকেশনের এই পয়েন্টে অ্যারেয়ের ডাইমেনশন অ্যাসাইন করা নাও হতে পারে।
- অনির্ধারিত এলিমেন্ট: সম্ভবত আপনি আপনার কোডে এলিমেন্টের সংখ্যা নির্ধারণ করেননি। একটি অ্যারেতে এলিমেন্টের সংখ্যা "Dim" বা "ReDim" কমান্ড ব্যবহার করে নির্ধারণ করা গুরুত্বপূর্ণ।
- ভুল কালেকশন মেম্বার: কিছু কেসে, ব্যবহারকারী এমন একটি কালেকশন মেম্বার রেফারেন্স করতে পারেন যা অস্তিত্বে নেই। কালেকশন মেম্বারের প্রতি ভুল রেফারেন্স হলে এই ত্রুটি ট্রিগার হতে পারে।
- শর্টহ্যান্ড স্ক্রিপ্ট: সম্ভবত আপনি সাবস্ক্রিপ্টের শর্টহ্যান্ড ফর্ম ব্যবহার করেছেন যা অবিধে একটি অবৈধ এলিমেন্ট স্পেসিফাই করেছে। একটি বৈধ কী নাম ব্যবহার করা গুরুত্বপূর্ণ।
এখন আপনার সমস্যার প্রকৃতি সম্পর্কে মৌলিক ধারণা পেয়ে গেলে, আমরা সমাধানগুলোর দিকে যাব। конфлиict এড়াতে এই সমাধানগুলো উপস্থাপিত নির্দিষ্ট ক্রমে ইমপ্লিমেন্ট করুন।
সমাধান ১: অ্যারে চেক করুন
সম্ভবত আপনি অ্যারে এলিমেন্টের জন্য ভুল মান নির্ধারণ করেছেন। তাই, আপনি অ্যারে এলিমেন্টের জন্য নির্ধারিত মানটি ডাবল-চেক করার পরামর্শ দেওয়া হয় এবং নিশ্চিত করুন এটি সঠিক। Ayrıca, অ্যারে ডিক্লেয়ারেশন চেক করুন এবং ভারিফাই করুন আপার এবং লোয়ার বাউন্ড। যদি অ্যারে রি-ডাইমেনশন করা হয়, LBound এবং UBound ফাংশন ব্যবহার করে কন্ডিশন অ্যাক্সেস করুন। ভেরিয়েবল নামের স্পেলিং চেক করুন যদি ইনডেক্সটি একটি ভেরিয়েবল হয়।
সমাধান ২: এলিমেন্টের সংখ্যা স্পেসিফাই করুন
কিছু কেসে, সম্ভবত আপনি আপনার কোডে অ্যারেতে এলিমেন্টের সংখ্যা নির্ধারণ করেননি যার কারণে ত্রুটি ট্রিগার হচ্ছে। পরামর্শ দেওয়া হয় আপনি Dim বা ReDim ফাংশন ব্যবহার করে অ্যারেতে এলিমেন্টের সংখ্যা স্পেসিফাই করুন।
সমাধান ৩: কনস্ট্রাক্ট পরিবর্তন করুন
এই ত্রুটি সাধারণত ট্রিগার হয় যখন ব্যবহারকারী ভুল বা অস্তিত্বহীন কালেকশন মেম্বার স্পেসিফাই করে। তাই, ইনডেক্স এলিমেন্ট স্পেসিফাই করার বদলে, "For Each...Next" কনস্ট্রাক্ট ব্যবহার করার পরামর্শ দেওয়া হয়।
সমাধান ৪: কীনেম এবং ইনডেক্স চেক করুন
কিছু কেসে, সম্ভবত আপনি সাবস্ক্রিপ্টের শর্টহ্যান্ড ফর্ম ব্যবহার করেছেন যা একটি অবৈধ এলিমেন্ট স্পেসিফাই করে। তাই, কালেকশনের জন্য একটি বৈধ কী নাম এবং ইনডেক্স ব্যবহার করার পরামর্শ দেওয়া হয়।