সুচিপত্র
Excel-এ VBA এর সাথে কাজ করার সময় আমরা যে সবচেয়ে সাধারণ ত্রুটির সম্মুখীন হই তা হল ব্যবহারকারী-সংজ্ঞায়িত প্রকার সংজ্ঞায়িত করা হয় না। এই নিবন্ধে, আমি আপনাকে দেখাব কেন এই ত্রুটিটি হয় এবং কীভাবে এই ত্রুটিটি সমাধান করা যায়।
অভ্যাস ওয়ার্কবুক ডাউনলোড করুন
আপনি যখন অনুশীলন করবেন তখন অনুশীলনের ওয়ার্কবুকটি ডাউনলোড করুন এই নিবন্ধটি পড়ছেন৷
ব্যবহারকারী-সংজ্ঞায়িত প্রকার সংজ্ঞায়িত নয়৷ টাইপ নট ডিফাইন্ড এক্সেল VBAএক্সেল VBA -এ প্রায়শই এই ত্রুটির পিছনে রয়েছে 2 প্রধান সমস্যা। আসুন সেগুলি বিস্তারিতভাবে অন্বেষণ করি এবং সেগুলি সমাধানের উপায়গুলি খুঁজে বের করি৷
1. ভেরিয়েবল ঘোষণা করার সময় বানান ত্রুটি
এটি এই ত্রুটির পিছনে প্রধান কারণ। বেশিরভাগ সময়, ত্রুটি "ব্যবহারকারী-সংজ্ঞায়িত প্রকার সংজ্ঞায়িত নয়" ভেরিয়েবল ঘোষণা করার সময় একটি বানান ত্রুটির কারণে ঘটে।
নিম্নলিখিত কোডগুলির লাইনগুলি দেখুন৷
4664
যদি আপনি এই কোডটি চালান, তাহলে আপনি একটি ত্রুটি বাক্স পাবেন যা আপনাকে ত্রুটির উপস্থিতি সম্পর্কে অবহিত করবে "ব্যবহারকারী-সংজ্ঞায়িত প্রকার সংজ্ঞায়িত নয়"৷ এর সাথে, আপনি নীল রঙে হাইলাইট করা কোডের দ্বিতীয় লাইনটি পাবেন, যেখানে আমি “স্ট্রিং” এর জায়গায় “strng” লিখেছি।
আমি আশা করি আপনি পয়েন্ট পেয়েছেন। VBA ভেরিয়েবল টাইপ “strng” চিনতে পারেনি, তাই এটিকে একটি নতুন ভেরিয়েবল টাইপ হিসাবে বিবেচনা করেছে এবং ভেবেছে আপনি এটিকে কোথাও সংজ্ঞায়িত করেছেন। কিন্তু যখন এটাআপনি এটি কোথাও ঘোষণা করেননি, এটি একটি ত্রুটি উত্থাপন করেছে।
অতএব, সাধারণ VBA কোডগুলি চালানোর সময়, আপনি যদি কোনওভাবে এই ত্রুটির সম্মুখীন হন, প্রথমে আপনার পরিবর্তনশীল প্রকারের সমস্ত বানান পরীক্ষা করুন।
2. সঠিক রেফারেন্সের অভাব
এই ত্রুটির পিছনে এটি আরেকটি কারণ। এটি সঠিক রেফারেন্সের অভাব। কখনও কখনও আমরা আমাদের কোডগুলিতে কিছু বস্তু ব্যবহার করি যেগুলির ভিজ্যুয়াল বেসিক রেফারেন্স বক্স থেকে সঠিক রেফারেন্সিং প্রয়োজন। অন্যথায়, VBA বস্তুটিকে চিনতে পারে না।
নিম্নলিখিত VBA কোডটি দেখুন।
2996
এই কোডটি চালান। আপনি একই পুরানো ত্রুটি পাবেন "ব্যবহারকারী-সংজ্ঞায়িত প্রকার সংজ্ঞায়িত নয়", অভিধান বস্তুটি হাইলাইট করা । এর কারণ হল VBA ডিকশনারি অবজেক্ট চিনতে পারেনি, এবং এটিকে ব্যবহারকারী-সংজ্ঞায়িত ভেরিয়েবল হিসাবে বিবেচনা করে, যা ভুলভাবে সংজ্ঞায়িত করা হয়নি।
এখন সবচেয়ে বড় প্রশ্ন হল, কিভাবে এই ত্রুটিটি সমাধান করবেন? সহজ. এই ত্রুটিটি সমাধান করার 2 উপায় রয়েছে৷
⧪ সমাধান 1: ভিজ্যুয়াল বক্স রেফারেন্স বক্স থেকে পূর্বশর্ত রেফারেন্স চেক করা হচ্ছে
এটি হল এই সমস্যা সমাধানের সবচেয়ে স্মার্ট উপায়। সরঞ্জাম > রেফারেন্স বোতাম ভিজ্যুয়াল বেসিক রিবনে। রেফারেন্স এ ক্লিক করুন।
রেফারেন্স নামে একটি ডায়ালগ বক্স খুলবে। স্ক্রোল করুন এবং খুঁজুন মাইক্রোসফ্ট স্ক্রিপ্টিং রানটাইম (এটি আপনি যে বস্তুটি ব্যবহার করছেন তার উপর নির্ভর করে। অভিধানবস্তু কে মাইক্রোসফ্ট স্ক্রিপ্টিং রানটাইম স্বীকৃত হতে হবে। সুতরাং, VBA কোডে একটি অবজেক্ট ব্যবহার করার সময়, আপনাকে VBA দ্বারা স্বীকৃত হওয়ার পূর্বশর্ত জানতে হবে। আরো তথ্যের জন্য এই লিঙ্কে যান।) এটি পরীক্ষা করুন৷
এখন ফিরে আসুন এবং কোডটি চালান৷ আপনি কোন ত্রুটি পাবেন না। কারণ VBA এই সময়ে অভিধান বস্তু চিনতে পারে।
⧪ সমাধান 2: এটিকে একটি নির্দিষ্ট বস্তুর পরিবর্তে একটি বিশুদ্ধ বস্তু হিসাবে ঘোষণা করা
এই সমস্যা সমাধানের আরেকটি উপায় আছে। আপনি বস্তুটিকে একটি অভিধান বস্তু এর পরিবর্তে একটি বিশুদ্ধ বস্তু হিসাবে ঘোষণা করতে পারেন।
নিম্নলিখিত কোডের লাইনগুলি লক্ষ্য করুন।
9646
এখানে আমি ভেরিয়েবলটিকে MyDictionary একটি সাধারণ বস্তু হিসাবে ঘোষণা করেছি, একটি অভিধান নয়। এখন আপনি যদি এই কোডটি চালান তবে আপনি কোন ত্রুটি পাবেন না।