ভিবিএ বাইরফ আর্গুমেন্টের ধরণের মিল নেই Error শীর্ষ 3 কারণ এবং ত্রুটি ফিক্স

এক্সেল ভিবিএতে বাইআরফ আর্গুমেন্টের প্রকারের মিল নেই

এই নিবন্ধে, আমরা এক্সেল ভিবিএ বাইআরফকে "আর্গুমেন্টের ধরণের মিস্যাম্যাচ ত্রুটি" হিসাবে ব্যবহার করার সময় যে ত্রুটিটি ঘটেছিল তা ব্যাখ্যা করি। তার আগে আমাকে প্রথমে আপনাকে "বাই রেফ" এর সাথে পরিচয় করিয়ে দিন। ভেরিয়েবলগুলি যে কোনও প্রোগ্রামিং ভাষার মূল কী এবং ভিবিএও আলাদা নয়। আমরা ভেরিয়েবল ঘোষণার অনেকগুলি উপায় দেখেছি ভেরিয়েবল ঘোষণার এক ধরণের উপায় "বাইআরফ" এবং "বাইভাল" শব্দ ব্যবহার করে।

বাইফের অর্থ কী?

"বাই রেফ" এর অর্থ "রেফারেন্স দ্বারা", এই শব্দটি ব্যবহার করে আমরা প্রকৃতপক্ষে রেফারেন্সের মাধ্যমে প্রক্রিয়াগুলিতে (সাব এবং ফাংশন উভয়ের জন্য) যুক্তিগুলি পাস করতে পারি। এটি তার ভাই "বাই ভাল" এর থেকে ভিন্ন, যা নমনীয় নয় তবে প্রকৃতির স্থির।

এটি বোঝার জন্য নীচের দুটি ম্যাক্রোটি একবার দেখুন।

কোড:

 সাব ম্যাক্রো 1 () ডি এম এ লম্বা এ = 50 ম্যাক্রো 2 এ ম্যাসগোবক্স এ এন্ড সাব সাব ম্যাক্রো 2 (বাই রেফ এ লং হিসাবে) এ = এ * 10 এন্ড সাব 

আমাদের এখানে দুটি যথাক্রমে যথাক্রমে ম্যাক্রো 1 এবং ম্যাক্রো 2 নামে পরিচিত। এটি আরও ভালভাবে বুঝতে F8 কী টিপে লাইনে ম্যাক্রো লাইনটি চালান।

চলক "A" এর মান 50 হিসাবে ক্যাপচার করতে F8 কী টিপুন।

কোডের পরবর্তী লাইনটি "ম্যাক্রো 2 এ" অর্থাত্ দ্বিতীয় ম্যাক্রোর নাম এবং "এ" হ'ল "বাই রেফ" শব্দটির মাধ্যমে সংজ্ঞাযুক্ত পরিবর্তনশীল।

আপনি যে মুহুর্তের উপরে দেখতে পাচ্ছেন আমরা "ম্যাক্রো 2 এ" কোডের লাইনটি কার্যকর করি এটি উপরের পদ্ধতিটি থেকে পরবর্তী ভিবিএ সাব পদ্ধতিতে চলে গেছে।

এখন আমরা দেখতে পাচ্ছি "A" এর ভ্যারিয়েবলের মান 50 এটি কারণ যেহেতু আমরা ভেরিয়েবলটি "A" ঘোষনা করতে "বাইরফ" শব্দটি ব্যবহার করেছি যা একই হিসাবে রয়েছে ম্যাক্রো 1 এটি আমাদের কাছ থেকে এই ভেরিয়েবল "এ" এর জন্য নির্ধারিত মানটি ক্যাপচার করেছে ম্যাক্রো 1.

এখন এই ম্যাক্রোতে (ম্যাক্রো 2) সমীকরণটি A = A * 10 অর্থাত্ A = 50 * 100 বলে। উপরের ম্যাক্রোতে ফিরে যেতে F8 কীটি 3 বার টিপুন (ম্যাক্রো 1).

ভিবিএর বার্তার বাক্সে ভেরিয়েবল "এ" এর মান দেখতে এখন আরও একবার টাইম F8 কী টিপুন।

মান 500 বলে।

যদিও আমরা এই ম্যাক্রোতে নির্ধারিত মানটি (ম্যাক্রো 1) 50, বায়ারফ শব্দটি ব্যবহার করে আমরা ম্যাক্রো 1 থেকে ভেরিয়েবল "A" এর মান ধরে রেখে ম্যাক্রো 2 সাবপ্রসিসিউরটি ট্রিগার করেছিলাম এবং তারপর 10 এর গুণক দ্বারা A এর মান নির্বাহ করে।

ভিবিএ বাইরেফ আর্গুমেন্ট প্রকারের অমিলের জন্য শীর্ষ 3 কারণ

উপরে আমরা দেখেছি যে "বাইআরফ" কীভাবে কাজ করে তবে আমরা কিছু ভুল করতে বাধ্য হই যা ফলস্বরূপ একটি ভিবিএ ত্রুটি বার্তাটি "বাইআরফ আর্গুমেন্ট টাইপ মিসম্যাচ" হিসাবে ছড়িয়ে দেয়।

এটি অনেক কারণের কারণে এবং এই বিভাগে, আমরা আপনাকে এই ত্রুটিটি কীভাবে সংশোধন করতে হবে এবং কোডটি ডিবাগ করব তা আপনাকে দেখাব।

আপনি এই ভিবিএ বাইআরফ আর্গুমেন্টের ধরণটি মেলে না এমন এক্সেল টেম্পলেটটি এখানে ডাউনলোড করতে পারেন - ভিবিএ বাইরফ আর্গুমেন্ট প্রকার মেলান না এমন এক্সেল টেম্পলেট

ত্রুটির কারণ # 1 - বিভিন্ন পরিবর্তনশীল নাম

এক্সেল ভিবিএতে এই ত্রুটি হওয়ার পেছনের অন্যতম প্রধান কারণ দুটি পদ্ধতিতে বিভিন্ন ভেরিয়েবল পাস করা। উদাহরণস্বরূপ নীচের কোডগুলি দেখুন।

কোড:

 সাব ম্যাক্রো 1 () ডি এম এ লম্বা এ = 50 ম্যাক্রো 2 বি এমএসবিবক্স এ এন্ড সাব সাব ম্যাক্রো 2 (বাই রেফ এ লং হিসাবে) বি = বি * 10 এন্ড সাব 

ম্যাক্রো 1 এ আমরা "এ" ভেরিয়েবল ব্যবহার করেছি এবং ম্যাক্রো 2 এ আমরা "বি" ভেরিয়েবল ব্যবহার করেছি। এখন আপনি যদি কোডটি চালানোর চেষ্টা করেন তবে আমরা "বাইরফ আর্গুমেন্ট টাইপ মিসমেচ" হিসাবে ভিবিএ ত্রুটি পেয়ে যাব।

উপরের ভেরিয়েবলটি আপনি দেখতে পাচ্ছেন "বি" হাইলাইট করা হয়েছে কারণ ভেরিয়েবলের নামের একটি মিল নেই।

সমাধান: এই সমস্যাটি কাটিয়ে উঠতে আমাদের অবশ্যই তা নিশ্চিত করতে হবে যে উভয় পদ্ধতিতে পরিবর্তনশীল নামগুলি সঠিক।

ত্রুটির কারণ 2: বিভিন্ন পরিবর্তিত ডেটা প্রকার

পরিবর্তনশীল নামগুলি একই সত্ত্বেও এটি ত্রুটির কারণ ঘটায় এটি হ'ল ডেটা টাইপের কারণে আমরা তাদেরকে অর্পণ করি। নীচের কোডটি দেখুন।

কোড:

 সাব ম্যাক্রো 1 () ধীরে ধীরে একটি পূর্ণসংখ্যার হিসাবে A = 50 ম্যাক্রো 2 এ এমএসজিবক্স এ শেষ সাব সাব ম্যাক্রো 2 (বাইরফ এ লম্বা হিসাবে) এ = এ * 10 এন্ড সাব 

উপরের কোডগুলিতে, আমি ম্যাক্রো 1-তে এবং ম্যাক্রো 2 তে একই ভেরিয়েবলটিকে ডেটা টাইপ হিসাবে "লং" হিসাবে নির্ধারিত করে ভেরিয়েবল "এ" পরিবর্তনশীল হিসাবে ঘোষণা করেছি।

আমরা যখন এই কোডটি চালাই, এটি একটি "ভিবিএ ত্রুটির কারণ হতে পারে" বাইআরফ আর্গুমেন্টের ধরণ ভুল নয় "।

এটি হ'ল কারণ আমরা একই ভেরিয়েবল নামের জন্য দুটি পৃথক ডেটা টাইপ বরাদ্দ করেছি।

সমাধান: উভয় পদ্ধতিতে ডেটা টাইপ একই হওয়া উচিত।

ত্রুটির কারণ 3: এক ম্যাক্রোতে ভেরিয়েবল ডেটা প্রকারগুলি অনুপস্থিত

এক্সেল ভিবিএ ত্রুটি "বাইআরফ আর্গুমেন্ট টাইপ মিসমেচ" কোনও ম্যাক্রোতে নির্ধারিত এবং অন্য ম্যাক্রোতে নির্ধারিত না হওয়া ডেটা টাইপের কারণে ঘটতে পারে।

কোড:

 সাব ম্যাক্রো 1 () এ = 50 ম্যাক্রো 2 এ ম্যাসগোবক্স এ এন্ড সাব সাব ম্যাক্রো 2 (বাই রেফ এ হিসাবে দীর্ঘ) এ = এ * 10 এন্ড সাব 

উপরের কোডে ম্যাক্রো 1, আমি কোনও ভেরিয়েবলের ঘোষনা করিনি বরং কেবল ভেরিয়েবলের মান নির্ধারণ করেছি।

অন্যদিকে ম্যাক্রো 2-এর জন্য আমি ভেরিয়েবলটি দীর্ঘ হিসাবে "এ" হিসাবে ঘোষণা করেছি। আপনি যদি এই কোডটি চালানোর চেষ্টা করেন তবে এটি "বাইরফ আর্গুমেন্টের ধরণের মিল নেই" ভিবিএ ত্রুটি ঘটবে।

সমাধান 1: এই ধরণের পরিস্থিতি এড়ানোর জন্য প্রথম সমাধানটি হ'ল উভয় পদ্ধতিতে ভেরিয়েবল ঘোষণা করা এবং একই ডেটা টাইপ নির্ধারণ করা।

সমাধান 2: একটি বিকল্প সমাধানটি হল মডিউলটির শীর্ষে "অপশন স্পষ্ট" শব্দ যুক্ত করে পরিবর্তনশীল ঘোষণা বাধ্যতামূলক করা।

এটি কী করবে এটি ভিবিএ দেখানোর আগে "বাইরেফ আর্গুমেন্টের ধরণের মিল নেই" ত্রুটিটি এটি আসলে আমাদের প্রথমে ভেরিয়েবলটি ঘোষণা করতে বলে।

সুতরাং, অপশন স্পষ্টত সর্বদা ভিবিএতে কার্যকর হয়।

মনে রাখার মতো ঘটনা

  • বাইআরফ বাই ভল এর বিপরীত।
  • বাইআরফ একটি পদ্ধতি থেকে অন্য পদ্ধতিতে রেফারেন্স বহন করে।
  • ভেরিয়েবলের নাম, ডেটা টাইপ উভয় পদ্ধতিতে একই হওয়া উচিত।
  • একাধিক ভেরিয়েবলের ক্ষেত্রে প্রতিটি ভেরিয়েবলকে পৃথকভাবে ঘোষণা করা দরকার।