VBA তে "ফাংশন" এবং "সাব" পদ্ধতি

বিষয়বস্তু

অন্তর্নির্মিত VBA ফাংশন

আপনি আপনার নিজস্ব VBA ফাংশন তৈরি করা শুরু করার আগে, এটা জেনে রাখা ভালো যে Excel VBA-এর প্রি-বিল্ট-ইন ফাংশনগুলির একটি সমৃদ্ধ সংগ্রহ রয়েছে যা আপনি আপনার কোড লেখার সময় ব্যবহার করতে পারেন।

এই ফাংশনগুলির একটি তালিকা VBA সম্পাদকে দেখা যেতে পারে:

  • একটি এক্সেল ওয়ার্কবুক খুলুন এবং VBA সম্পাদক চালু করুন (এটি করতে ক্লিক করুন Alt + F11), এবং তারপরে টিপুন F2.
  • স্ক্রিনের উপরের বাম দিকে ড্রপডাউন তালিকা থেকে একটি লাইব্রেরি নির্বাচন করুন VBA.
  • অন্তর্নির্মিত VBA ক্লাস এবং ফাংশনগুলির একটি তালিকা প্রদর্শিত হবে। উইন্ডোর নীচের অংশে এর সংক্ষিপ্ত বিবরণ প্রদর্শন করতে ফাংশনের নামের উপর ক্লিক করুন। টিপে F1 সেই বৈশিষ্ট্যের জন্য অনলাইন সহায়তা পৃষ্ঠা খুলবে।

উপরন্তু, উদাহরণ সহ অন্তর্নির্মিত VBA ফাংশনগুলির একটি সম্পূর্ণ তালিকা ভিজ্যুয়াল বেসিক বিকাশকারী কেন্দ্রে পাওয়া যাবে।

VBA-তে কাস্টম পদ্ধতি "ফাংশন" এবং "সাব"

এক্সেল ভিজ্যুয়াল বেসিকে, কমান্ডের একটি সেট যা একটি নির্দিষ্ট কাজ সম্পাদন করে একটি পদ্ধতিতে স্থাপন করা হয়। ক্রিয়া (ফাংশন) বা উপ (সাবরুটিন)। পদ্ধতির মধ্যে প্রধান পার্থক্য ক্রিয়া и উপ যে পদ্ধতি ক্রিয়া ফেরত ফলাফল, পদ্ধতি উপ - না.

অতএব, যদি আপনাকে ক্রিয়া সম্পাদন করতে হয় এবং কিছু ফলাফল পেতে হয় (উদাহরণস্বরূপ, বেশ কয়েকটি সংখ্যার যোগফল), তবে পদ্ধতিটি সাধারণত ব্যবহৃত হয় ক্রিয়া, এবং সহজভাবে কিছু ক্রিয়া সম্পাদন করার জন্য (উদাহরণস্বরূপ, কোষগুলির একটি গ্রুপের বিন্যাস পরিবর্তন করুন), আপনাকে পদ্ধতিটি নির্বাচন করতে হবে উপ.

আর্গুমেন্ট

আর্গুমেন্ট ব্যবহার করে VBA পদ্ধতিতে বিভিন্ন তথ্য প্রেরণ করা যেতে পারে। একটি পদ্ধতি ঘোষণা করার সময় যুক্তি তালিকা নির্দিষ্ট করা হয়। উদাহরণস্বরূপ, পদ্ধতি উপ VBA-তে নির্বাচিত পরিসরের প্রতিটি ঘরে প্রদত্ত পূর্ণসংখ্যা (পূর্ণসংখ্যা) যোগ করে। আপনি এই নম্বরটি একটি যুক্তি ব্যবহার করে পদ্ধতিতে পাস করতে পারেন, যেমন:

সাব AddToCells(i হিসাবে পূর্ণসংখ্যা) ... শেষ সাব

মনে রাখবেন যে পদ্ধতির জন্য যুক্তি আছে ক্রিয়া и উপ VBA তে ঐচ্ছিক। কিছু পদ্ধতিতে আর্গুমেন্টের প্রয়োজন হয় না।

ঐচ্ছিক আর্গুমেন্ট

VBA পদ্ধতিতে ঐচ্ছিক আর্গুমেন্ট থাকতে পারে। এগুলি এমন যুক্তি যা ব্যবহারকারী চাইলে নির্দিষ্ট করতে পারে এবং যদি সেগুলি বাদ দেওয়া হয়, পদ্ধতিটি তাদের জন্য ডিফল্ট মান ব্যবহার করে।

পূর্ববর্তী উদাহরণে ফিরে, একটি ফাংশন ঐচ্ছিক একটি পূর্ণসংখ্যা আর্গুমেন্ট করতে, এটি এই মত ঘোষণা করা হবে:

সাব AddToCells (ঐচ্ছিক i পূর্ণসংখ্যা = 0 হিসাবে)

এই ক্ষেত্রে, পূর্ণসংখ্যা যুক্তি i ডিফল্ট 0 হবে।

একটি পদ্ধতিতে বেশ কিছু ঐচ্ছিক আর্গুমেন্ট থাকতে পারে, যার সবকটিই আর্গুমেন্ট তালিকার শেষে তালিকাভুক্ত করা হয়েছে।

মান এবং রেফারেন্স দ্বারা আর্গুমেন্ট পাস

VBA-তে আর্গুমেন্ট দুটি উপায়ে একটি পদ্ধতিতে পাস করা যেতে পারে:

  • বাইওয়াল - মান দ্বারা একটি যুক্তি পাস. এর মানে হল যে শুধুমাত্র মান (অর্থাৎ, আর্গুমেন্টের একটি অনুলিপি) পদ্ধতিতে পাস করা হয়, এবং সেইজন্য পদ্ধতির ভিতরে আর্গুমেন্টে করা যেকোনো পরিবর্তন প্রক্রিয়াটি প্রস্থান করার সময় হারিয়ে যাবে।
  • বাইরেফ - রেফারেন্স দ্বারা একটি যুক্তি পাস. অর্থাৎ, মেমরিতে আর্গুমেন্ট অবস্থানের আসল ঠিকানা পদ্ধতিতে পাস করা হয়। পদ্ধতির অভ্যন্তরে একটি আর্গুমেন্টে করা যেকোনো পরিবর্তন প্রক্রিয়াটি প্রস্থান করার সময় সংরক্ষণ করা হবে।

কীওয়ার্ড ব্যবহার করে বাইওয়াল or বাইরেফ পদ্ধতির ঘোষণায়, আপনি কীভাবে যুক্তিটি পদ্ধতিতে পাস করা হয় তা নির্দিষ্ট করতে পারেন। এটি নীচের উদাহরণে দেখানো হয়েছে:

সাব AddToCells(ByVal i পূর্ণসংখ্যা হিসাবে) ... শেষ সাব
এই ক্ষেত্রে, পূর্ণসংখ্যা যুক্তি i মান দ্বারা পাস. পদ্ধতি ছাড়ার পরে উপ সব দিয়ে তৈরি i পরিবর্তন হারিয়ে যাবে।
সাব AddToCells(ByRef i পূর্ণসংখ্যা হিসাবে) ... শেষ সাব
এই ক্ষেত্রে, পূর্ণসংখ্যা যুক্তি i রেফারেন্স দ্বারা পাস. পদ্ধতি ছাড়ার পরে উপ সব দিয়ে তৈরি i পরিবর্তনগুলি ভেরিয়েবলে সংরক্ষণ করা হবে যা পদ্ধতিতে পাস করা হয়েছিল উপ.

মনে রাখবেন যে VBA-তে আর্গুমেন্ট ডিফল্টভাবে রেফারেন্স দ্বারা পাস করা হয়। অন্য কথায়, যদি কীওয়ার্ড ব্যবহার না করা হয় বাইওয়াল or বাইরেফ, তারপর যুক্তি রেফারেন্স দ্বারা পাস করা হবে.

পদ্ধতির সাথে এগিয়ে যাওয়ার আগে ক্রিয়া и উপ আরও বিস্তারিতভাবে, এই দুটি ধরণের পদ্ধতির মধ্যে বৈশিষ্ট্য এবং পার্থক্যগুলি আরেকবার দেখে নেওয়া দরকারী হবে। নিচে VBA পদ্ধতির সংক্ষিপ্ত আলোচনা ক্রিয়া и উপ এবং সহজ উদাহরণ দেখানো হয়.

VBA পদ্ধতি "ফাংশন"

VBA সম্পাদক পদ্ধতিটি স্বীকৃতি দেয় ক্রিয়াযখন এটি নিম্নলিখিত খোলার এবং বন্ধ করার বিবৃতিগুলির মধ্যে আবদ্ধ কমান্ডগুলির একটি গ্রুপের মুখোমুখি হয়:

ফাংশন... শেষ ফাংশন

পূর্বে উল্লিখিত, পদ্ধতি ক্রিয়া VBA তে (এর বিপরীতে উপ) একটি মান প্রদান করে। নিম্নলিখিত নিয়মগুলি রিটার্ন মানগুলিতে প্রযোজ্য:

  • রিটার্ন মানের ডেটা টাইপ পদ্ধতির শিরোনামে ঘোষণা করতে হবে ক্রিয়া.
  • যে ভেরিয়েবলটিতে রিটার্ন মান রয়েছে তার নাম পদ্ধতির মতোই হতে হবে ক্রিয়া. এই পরিবর্তনশীলটিকে আলাদাভাবে ঘোষণা করার প্রয়োজন নেই, কারণ এটি সর্বদা পদ্ধতির একটি অবিচ্ছেদ্য অংশ হিসাবে বিদ্যমান। ক্রিয়া.

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

VBA ফাংশন উদাহরণ: 3 সংখ্যার উপর একটি গাণিতিক অপারেশন সম্পাদন করা

নিম্নলিখিত একটি VBA পদ্ধতি কোড একটি উদাহরণ ক্রিয়া, যা টাইপের তিনটি আর্গুমেন্ট নেয় ডবল (ডাবল-নির্ভুলতা ভাসমান-বিন্দু সংখ্যা)। ফলস্বরূপ, পদ্ধতিটি অন্য সংখ্যার ধরন প্রদান করে ডবলপ্রথম দুটি আর্গুমেন্ট বিয়োগ তৃতীয় আর্গুমেন্টের যোগফলের সমান:

ফাংশন সামমাইনাস

এই খুব সহজ VBA পদ্ধতি ক্রিয়া আর্গুমেন্টের মাধ্যমে একটি পদ্ধতিতে ডেটা কীভাবে প্রেরণ করা হয় তা ব্যাখ্যা করে। আপনি দেখতে পারেন যে পদ্ধতি দ্বারা প্রত্যাবর্তিত ডেটা টাইপ হিসাবে সংজ্ঞায়িত করা হয়েছে ডবল (শব্দগুলো বলে ডাবল হিসেবে আর্গুমেন্টের তালিকার পরে)। এই উদাহরণটিও দেখায় কিভাবে পদ্ধতির ফলাফল ক্রিয়া পদ্ধতির নামের মতো একই নামের একটি ভেরিয়েবলে সংরক্ষণ করা হয়।

VBA পদ্ধতিটিকে "ফাংশন" বলা হচ্ছে

উপরের সহজ পদ্ধতি হলে ক্রিয়া ভিজ্যুয়াল বেসিক এডিটরের একটি মডিউলে ঢোকানো, এটি অন্যান্য VBA পদ্ধতি থেকে কল করা যেতে পারে বা এক্সেল ওয়ার্কবুকের একটি ওয়ার্কশীটে ব্যবহার করা যেতে পারে।

অন্য পদ্ধতি থেকে VBA পদ্ধতি "ফাংশন" কল করুন

কার্যপ্রণালী ক্রিয়া শুধুমাত্র একটি ভেরিয়েবলে সেই পদ্ধতিটি বরাদ্দ করে অন্য VBA পদ্ধতি থেকে কল করা যেতে পারে। নিম্নলিখিত উদাহরণ একটি পদ্ধতি একটি কল দেখায় সুমিনাস, যা উপরে সংজ্ঞায়িত করা হয়েছিল।

সাব মেইন() ডিম মোট হিসাবে ডাবল মোট = যোগমাইনাস(5, 4, 3) শেষ সাব

একটি ওয়ার্কশীট থেকে VBA পদ্ধতি "ফাংশন" কল করুন

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

=SumMinus(10, 5, 2)

VBA পদ্ধতি "সাব"

VBA সম্পাদক বুঝতে পারেন যে এটির সামনে একটি পদ্ধতি রয়েছে উপযখন এটি নিম্নলিখিত খোলার এবং বন্ধ করার বিবৃতিগুলির মধ্যে আবদ্ধ কমান্ডগুলির একটি গ্রুপের মুখোমুখি হয়:

সাব... শেষ সাব

VBA পদ্ধতি "সাব": উদাহরণ 1. ঘরের একটি নির্বাচিত পরিসরে কেন্দ্রের প্রান্তিককরণ এবং ফন্টের আকার পরিবর্তন

একটি সাধারণ VBA পদ্ধতির একটি উদাহরণ বিবেচনা করুন উপ, যার কাজ হল ঘরের নির্বাচিত পরিসরের বিন্যাস পরিবর্তন করা। কোষগুলি কেন্দ্রীভূত (উল্লম্বভাবে এবং অনুভূমিকভাবে) এবং ফন্টের আকার ব্যবহারকারী-নির্দিষ্টে পরিবর্তিত হয়:

Sub Format_Centered_And_Sized(ঐচ্ছিক iFontSize as integer = 10) Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Size = iFontSize শেষ সাব

এই পদ্ধতি উপ কর্ম সঞ্চালন কিন্তু একটি ফলাফল ফিরে না.

এই উদাহরণটি একটি ঐচ্ছিক যুক্তিও ব্যবহার করে অক্ষরের আকার. যদি তর্ক হয় অক্ষরের আকার পদ্ধতিতে পাস করা হয়নি উপ, তাহলে এর ডিফল্ট মান 10। তবে, যদি আর্গুমেন্ট হয় অক্ষরের আকার পদ্ধতিতে পাস উপ, তারপর কক্ষের নির্বাচিত পরিসর ব্যবহারকারীর দ্বারা নির্দিষ্ট ফন্টের আকারে সেট করা হবে।

VBA উপ-প্রক্রিয়া: উদাহরণ 2: সেলের নির্বাচিত পরিসরে কেন্দ্র সারিবদ্ধ এবং বোল্ড ফন্ট

নিম্নলিখিত পদ্ধতিটি এইমাত্র আলোচিত পদ্ধতির অনুরূপ, কিন্তু এবার, আকার পরিবর্তন করার পরিবর্তে, এটি ঘরের নির্বাচিত পরিসরে একটি গাঢ় ফন্ট শৈলী প্রয়োগ করে৷ এটি একটি উদাহরণ পদ্ধতি উপ, যা কোন যুক্তি নেয় না:

Sub Format_Centered_And_Bold() Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Bold = True End Sub

এক্সেল ভিবিএ-তে "সাব" পদ্ধতিতে কল করা

অন্য পদ্ধতি থেকে VBA পদ্ধতি "সাব" কল করুন

একটি VBA পদ্ধতি কল করতে উপ অন্য VBA পদ্ধতি থেকে, আপনাকে কীওয়ার্ড লিখতে হবে কল, পদ্ধতির নাম উপ এবং আরও বন্ধনীতে পদ্ধতির আর্গুমেন্ট রয়েছে। এটি নীচের উদাহরণে দেখানো হয়েছে:

সাব মেইন() কল ফরম্যাট_সেন্টারড_এন্ড_সাইজ(20) শেষ সাব

যদি পদ্ধতি বিন্যাস_কেন্দ্রিক_এন্ড_আকার একাধিক যুক্তি আছে, সেগুলি অবশ্যই কমা দ্বারা পৃথক করা উচিত৷ এটার মত:

সাব মেইন() কল ফরম্যাট_কেন্দ্রিক_এন্ড_সাইজ(আর্গ1, আরগ2, ...) শেষ সাব

ওয়ার্কশীট থেকে VBA পদ্ধতি "সাব" কল করুন

কার্যপ্রণালী উপ এক্সেল শীট কক্ষে সরাসরি প্রবেশ করা যাবে না, যেমন একটি পদ্ধতির মাধ্যমে করা যেতে পারে ক্রিয়াকারণ পদ্ধতি উপ একটি মান ফেরত দেয় না। যাইহোক, পদ্ধতি উপ, যার কোন যুক্তি নেই এবং হিসাবে ঘোষণা করা হয়েছে৷ প্রকাশ্য (নিচে দেখানো হয়েছে) ওয়ার্কশীটের ব্যবহারকারীদের জন্য উপলব্ধ হবে। সুতরাং, যদি উপরে আলোচনা করা সহজ পদ্ধতি উপ ভিজ্যুয়াল বেসিক এডিটরের একটি মডিউলে ঢোকানো, পদ্ধতি বিন্যাস_কেন্দ্রিক_এবং_বোল্ড এক্সেল ওয়ার্কশীট এবং পদ্ধতিতে ব্যবহারের জন্য উপলব্ধ হবে বিন্যাস_কেন্দ্রিক_এন্ড_আকার – পাওয়া যাবে না কারণ এতে যুক্তি রয়েছে।

এখানে একটি পদ্ধতি চালানোর (বা চালানো) একটি সহজ উপায় উপ, কার্যপত্রক থেকে অ্যাক্সেসযোগ্য:

  • প্রেস Alt + F8 (বোতাম চাপুন অল্টার এবং এটি ধরে রাখার সময়, কী টিপুন F8).
  • প্রদর্শিত ম্যাক্রোগুলির তালিকায়, আপনি যেটি চালাতে চান সেটি নির্বাচন করুন।
  • প্রেস চালান (চালান)

একটি পদ্ধতি সঞ্চালন উপ দ্রুত এবং সহজে, আপনি এটিতে একটি কীবোর্ড শর্টকাট বরাদ্দ করতে পারেন। এই জন্য:

  • প্রেস Alt + F8.
  • প্রদর্শিত ম্যাক্রোগুলির তালিকায়, আপনি একটি কীবোর্ড শর্টকাট বরাদ্দ করতে চান এমন একটি নির্বাচন করুন৷
  • প্রেস পরামিতি (বিকল্প) এবং প্রদর্শিত ডায়ালগ বক্সে, কীবোর্ড শর্টকাট লিখুন।
  • প্রেস OK এবং ডায়ালগ বন্ধ করুন ম্যাক্রো (ম্যাক্রো)।

মনোযোগ: একটি ম্যাক্রোতে একটি কীবোর্ড শর্টকাট বরাদ্দ করার সময়, নিশ্চিত করুন যে এটি এক্সেলে স্ট্যান্ডার্ড হিসাবে ব্যবহৃত হয় না (উদাহরণস্বরূপ, Ctrl + C) আপনি যদি ইতিমধ্যে বিদ্যমান একটি কীবোর্ড শর্টকাট নির্বাচন করেন, তাহলে এটি ম্যাক্রোতে পুনরায় বরাদ্দ করা হবে, এবং ফলস্বরূপ, ব্যবহারকারী দুর্ঘটনাক্রমে ম্যাক্রো শুরু করতে পারে।

ভিবিএ পদ্ধতির সুযোগ

এই টিউটোরিয়ালের পার্ট 2 এ ভেরিয়েবল এবং ধ্রুবকের সুযোগ এবং কীওয়ার্ডের ভূমিকা নিয়ে আলোচনা করা হয়েছে। প্রকাশ্য и বেসরকারী. এই কীওয়ার্ডগুলি VBA পদ্ধতির সাথেও ব্যবহার করা যেতে পারে:

পাবলিক সাব AddToCells(i হিসাবে পূর্ণসংখ্যা) ... শেষ সাব
যদি পদ্ধতি ঘোষণার আগে কীওয়ার্ড থাকে প্রকাশ্য, তারপর পদ্ধতিটি সেই VBA প্রকল্পের সমস্ত মডিউলের জন্য উপলব্ধ হবে।
ব্যক্তিগত সাব AddToCells(i পূর্ণসংখ্যা হিসাবে) ... শেষ সাব
যদি পদ্ধতি ঘোষণার আগে কীওয়ার্ড থাকে বেসরকারী, তাহলে এই পদ্ধতিটি শুধুমাত্র বর্তমান মডিউলের জন্য উপলব্ধ হবে। অন্য কোন মডিউলে বা এক্সেল ওয়ার্কবুক থেকে এটি কল করা যাবে না।

মনে রাখবেন যে যদি আগে একটি VBA পদ্ধতি ঘোষণা ক্রিয়া or উপ কীওয়ার্ড ঢোকানো হয় না, পদ্ধতির জন্য ডিফল্ট বৈশিষ্ট্য সেট করা হয় প্রকাশ্য (অর্থাৎ, এটি এই VBA প্রকল্পের সর্বত্র উপলব্ধ হবে)। এটি পরিবর্তনশীল ঘোষণার বিপরীতে, যা ডিফল্টরূপে বেসরকারী.

VBA পদ্ধতি "ফাংশন" এবং "সাব" থেকে তাড়াতাড়ি প্রস্থান করুন

আপনি যদি একটি VBA পদ্ধতির সম্পাদন বন্ধ করতে চান ক্রিয়া or উপ, তার স্বাভাবিক সমাপ্তির জন্য অপেক্ষা না করে, তারপর এই জন্য অপারেটর আছে প্রস্থান ফাংশন и প্রস্থান করুন. এই অপারেটরগুলির ব্যবহার একটি উদাহরণ হিসাবে একটি সহজ পদ্ধতি ব্যবহার করে নীচে দেখানো হয়েছে। ক্রিয়াA যেটি আরও অপারেশন করার জন্য একটি ইতিবাচক যুক্তি পাওয়ার আশা করে। যদি একটি অ-ইতিবাচক মান পদ্ধতিতে পাস করা হয়, তাহলে আর কোন অপারেশন করা যাবে না, তাই ব্যবহারকারীকে একটি ত্রুটি বার্তা দেখানো উচিত এবং পদ্ধতিটি অবিলম্বে প্রস্থান করা উচিত:

ফাংশন VAT_Amount(sVAT_Rate as single) একক VAT_Amount = 0 যদি sVAT_Rate <= 0 তাহলে MsgBox "sVAT_Rate এর একটি ইতিবাচক মান প্রত্যাশিত কিন্তু প্রাপ্ত হয়েছে " & sVAT_Rate প্রস্থান ফাংশন শেষ হলে... ফাংশন শেষ করুন

প্রক্রিয়াটি সম্পূর্ণ করার আগে দয়া করে নোট করুন ক্রিয়া - ভ্যাট পরিমাণ, একটি অন্তর্নির্মিত VBA ফাংশন কোডে ঢোকানো হয় MsgBox, যা ব্যবহারকারীকে একটি সতর্কতা পপআপ প্রদর্শন করে।

নির্দেশিকা সমন্ধে মতামত দিন