এক্সেল ভিজ্যুয়াল বেসিক ফর অ্যাপ্লিকেশনস (VBA) একটি শক্তিশালী প্রোগ্রামিং ল্যাঙ্গুয়েজ। VBA আপনাকে টাস্ক অটোমেট করতে, কাস্টম ফাংশন তৈরি করতে, এবং স্প্রেডশিট ফাংশনালিটি বাড়াতে দেয়। আপনি যদি VBA-তে নতুন হন, Macro, Module, এবং Procedure-এর মতো কী টার্ম বোঝা অত্যন্ত জরুরি। এই কনসেপ্টগুলো একে অপর সাথে জড়িত হলেও আলাদা উদ্দেশ্যে সার্ভ করে।
এই টিউটোরিয়ালে, আমরা এক্সেল VBA টার্মিনোলজি আলোচনা করব: Macro vs Module vs Procedure। আমরা ব্যাখ্যা, উদাহরণ, এবং প্র্যাক্টিক্যাল টিপস দিয়ে সেগুলো ব্রেক ডাউন করব যাতে আপনি সহজে শুরু করতে পারেন।
ফলো করার জন্য, আপনাকে এক্সেল লাগবে (২০০৭ বা তার পরে যেকোনো ভার্সন) Developer ট্যাব ইনাবল্ড থাকা সাথেই।
- যদি ভিজিবল না থাকে, File ট্যাবে যান >> Options >> Customize Ribbon >> ডান পাশে Developer নির্বাচন করুন
১. ম্যাক্রো কী?
এক্সেল VBA-তে Macro সবচেয়ে ইউজার-ফ্রেন্ডলি এন্ট্রি পয়েন্ট। এটি মূলত রেকর্ডেড বা লেখা ইনস্ট্রাকশন সেট যা এক্সেলে রিপিটেটিভ টাস্ক অটোমেট করে। এক্সেলের ম্যাক্রো রিকর্ডার ব্যবহার করে গভীর প্রোগ্রামিং জ্ঞান ছাড়াই ম্যাক্রো তৈরি করা যায়। এটি আপনার অ্যাকশন ক্যাপচার করে, যেমন সেল ফরম্যাট করা বা ফর্মুলা ইনসার্ট করা, এবং সেগুলো VBA কোডে রূপান্তরিত করে।
প্র্যাক্টিক্যাল টার্মস-এ, যখন লোকজন বলে "আমি একটি ম্যাক্রো রেকর্ড করেছি" বা "আমি একটি ম্যাক্রো লিখেছি", তারা সাধারণত একটি মডিউলে স্টোর করা Sub procedure-এর কথা বলে। এক্সেলের ম্যাক্রো রিকর্ডার Sub procedure অটোমেটিক্যালি তৈরি করে।
কী বৈশিষ্ট্য:
- উদ্দেশ্য: টাস্ক অটোমেট করে সময় বাঁচাতে। উদাহরণস্বরূপ, একটি ম্যাক্রো ডেটা সর্ট করতে পারে, ফিল্টার প্রয়োগ করতে পারে, বা এক ক্লিকে রিপোর্ট জেনারেট করতে পারে।
- তৈরির পদ্ধতি:
- রেকর্ডেড: সিম্পল টাস্কের জন্য ম্যাক্রো রিকর্ডার ব্যবহার করুন।
- লিখিত: আরও কমপ্লেক্স লজিকের জন্য VBA এডিটরে ম্যানুয়ালি কোড এডিট বা লিখুন।
- স্কোপ: ম্যাক্রো সাধারণত ওয়ার্কবুকে স্টোর থাকে এবং বাটন, শর্টকাট, বা ম্যাক্রো ডায়লগ থেকে রান করা যায়।
- সীমাবদ্ধতা: রেকর্ডেড ম্যাক্রোতে প্রায়ই অপ্রয়োজনীয় কোড থাকে (যেমন সেল সিলেক্ট করা), এবং সেল রেফারেন্স কমপ্লেক্স見える পারে, তাই সেগুলো প্রায়ই ম্যানুয়ালি ক্লিন আপ করা হয়।
Macro ≠ VBA: VBA একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ। একটি ম্যাক্রো হলো VBA ব্যবহার করে বিল্ট রানেবল অটোমেশন (বা VBA-তে রেকর্ড করা)।
উদাহরণ: একটি সিম্পল ম্যাক্রো তৈরি ও রান করা
- Developer ট্যাবে যান >> Record Macro নির্বাচন করুন
- নাম দিন ApplyFormat (স্পেস নয়) >> চাইলে শর্টকাট অ্যাসাইন করুন >> OK ক্লিক করুন

- অ্যাকশন পারফর্ম করুন:
- হেডারগুলো সিলেক্ট করুন
- Home ট্যাবে যান >> Bold নির্বাচন করুন
- Fill কালার এবং Font কালার প্রয়োগ করুন
- রেকর্ডিং বন্ধ করুন: Developer ট্যাবে যান >> Stop Recording ক্লিক করুন

পৃষ্ঠপোষে, এক্সেল এমন VBA কোড জেনারেট করে:
Sub ApplyFormat() ' ' ApplyFormat Macro ' ' Keyboard Shortcut: Ctrl+Shift+F ' Range("A1:G1").Select Selection.Font.Bold = True With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent6 .TintAndShade = -0.249977111117893 .PatternTintAndShade = 0 End With With Selection.Font .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 End With End Sub
- এটি একটি Sub (Subroutine-এর সংক্ষিপ্ত), যা একটি প্রসিডিউর টাইপ

ম্যাক্রো রান করুন:
- Developer ট্যাবে যান >> Macros নির্বাচন করুন
- ApplyFormat নির্বাচন করুন >> Run ক্লিক করুন
- বা Ctrl+Shift+F চাপুন

এখন আপনি কোডিং এক্সপার্টাইজ ছাড়া কুইক অটোমেশনের জন্য ম্যাক্রো তৈরি ও ব্যবহার করতে পারেন।
২. প্রসিডিউর কী?
এক Procedure হলো সবচেয়ে মৌলিক ইউনিট; এটি একটি VBA কোড ব্লক যা একটি নির্দিষ্ট টাস্ক পারফর্ম করে। এটাকে ইনস্ট্রাকশন সেট বলে ভাবুন যা এক্সেল ফলো করে যখন আপনি সেটি রান করেন। প্রসিডিউরই সাবে আসল লজিক থাকে; অন্য ল্যাঙ্গুয়েজের ফাংশন বা মেথডের মত ভাবুন।
কী বৈশিষ্ট্য:
- টাইপ:
- Sub Procedure (Sub): অ্যাকশন পারফর্ম করে কিন্তু কোনো মান রিটার্ন করে না। VBA কনটেক্স্টে যেসবকে অধিকাংশ "ম্যাক্রো" বলে সেটাই Sub procedure। এটি Sub দিয়ে শুরু হয় এবং End Sub দিয়ে শেষ হয়।
- Function Procedure (Function): ক্যালকুলেশন পারফর্ম করে এবং একটি মান রিটার্ন করে। এটি Function দিয়ে শুরু হয় এবং End Function দিয়ে শেষ হয়। ওয়ার্কশিটে কাস্টম ফর্মুলার জন্য উপযোগী।
- উদ্দেশ্য: রিযুজেবল কোড তৈরি করে। প্রসিডিউরতে লুপ, কন্ডিশন, ভেরিয়েবল, এবং এক্সেল অবজেক্টের সাথে ইন্টারঅ্যাকশন (যেমন সেল বা চার্ট) থাকতে পারে।
- স্কোপ: পাবলিক (সর্বত্র থেকে অ্যাক্সেসযোগ্য) বা প্রাইভেট (মডিউল-লিমিটেড) হতে পারে।
- প্যারামিটার: ফ্লেক্সিবিলিটির জন্য ইনপुट (আর্গুমেন্ট) নিতে পারে।
উদাহরণ: একটি Sub Procedure vs. একটি Function Procedure
- Developer ট্যাবে যান >> Visual Basic (বা Alt+F11 চাপুন)
- Insert >> Module ক্লিক করুন
Sub Procedure (ম্যাক্রোর মত):
Sub ClearFormatting() Range("A1:G1").ClearFormats MsgBox "Formatting is cleared" End Sub
- কোড রান করুন ফরম্যাটিং ক্লিয়ার করতে, তারপর "Formatting is cleared" মেসেজ দেখাতে

Function Procedure:
Function Multiply(num1 As Integer, num2 As Integer) As Integer Multiply = num1 * num2 End Function
- সেলে ব্যবহার করুন =Multiply(E2,F2) মানগুলো গুণ করার জন্য

ম্যাক্রোর সাথে সম্পর্ক: সব ম্যাক্রো Sub procedure, কিন্তু সব Sub procedure রেকর্ডেড ম্যাক্রো নয়। আপনি অ্যাডভান্সড Sub procedure লিখতে পারেন যা সিম্পল রেকর্ডিংয়ের বাইরে যায়।
যখন আপনার স্ট্রাকচার্ড, রিযুজেবল কোড দরকার, প্রসিডিউর ব্যবহার করুন। কমপ্লেক্স টাস্ক একাধিক প্রসিডিউরে ভাগ করুন বেটার অর্গানাইজেশনের জন্য।
৩. মডিউল কী?
এক Module হলো একটি কন্টেইনার যেখানে আমরা এক বা একাধিক প্রসিডিউর স্টোর করি। এটি VBA এডিটরে একটি ফাইল যেখানে আপনি আপনার VBA কোড লিখেন এবং অর্গানাইজ করেন। এটি একটি ফোল্ডারের মত যা আপনার কোড অর্গানাইজ করে, ম্যানেজ এবং রিযুজ করা সহজ করে।
মডিউলের টাইপ:
- স্ট্যান্ডার্ড মডিউল: সবচেয়ে কমন টাইপ, যেখানে জেনারেল-পারপজ কোড লিখা হয়।
- এগুলো আপনার VBA প্রজেক্ট এক্সপ্লোরারে "Module1", "Module2", ইত্যাদি হিসেবে দেখায়।
- VBA এডিটর খুলুন >> Insert >> Module ক্লিক করুন।
- ওয়ার্কবুক মডিউল (ThisWorkbook): ওয়ার্কবুক ইভেন্টের সাথে জড়িত কোড ধারণ করে (ওপেন, বিফোর ক্লোজ, ইত্যাদি)।
- ইভেন্ট প্রসিডিউর যা অ্যাকশনের রেসপন্স দেয় যেমন ওয়ার্কবুক ওপেন বা ক্লোজ হলে।
- ওয়ার্কশিট মডিউল (Sheet1, Sheet2, ইত্যাদি): এগুলো নির্দিষ্ট শীটের সাথে আটাচ করা স্পেশাল মডিউল।
- এগুলো ইভেন্ট প্রসিডিউর ধারণ করে যা শীট ক্লিক করলে রেসপন্স দেয়, এবং শীট চেঞ্জ হলে কোড রান হয়।
- ক্লাস মডিউল: এগুলো অ্যাডভান্সড মডিউল কাস্টম অবজেক্ট তৈরি করতে ব্যবহৃত হয়, কিন্তু শুরুতে আপনাকে এটা লাগবে না। এটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং-এর জন্য ব্যবহৃত হয়, যেমন কাস্টম ক্লাস তৈরি।
- UserForm মডিউল: কাস্টম ডায়লগ বক্স ডিজাইন করার জন্য।

উদাহরণ: মডিউলের সাথে কাজ করা
- Developer ট্যাবে যান >> Visual Basic (বা Alt+F11 চাপুন)
- প্রজেক্ট এক্সপ্লোরার (বাম প্যানেল)-এ,
- আপনার ওয়ার্কবুক রাইট-ক্লিক করুন >> Insert >> Module ক্লিক করুন

- একটি প্রসিডিউর কপি-পেস্ট করুন:
Sub FormatSalesReport() Dim ws As Worksheet Set ws = ActiveSheet Dim lastRow As Long lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ws.Range("A1:H1").Font.Bold = True ws.Range("A1:H" & lastRow).Borders.LineStyle = xlContinuous Dim i As Long For i = 2 To lastRow If ws.Cells(i, "H").Value > 100 Then ws.Cells(i, "H").Interior.Color = RGB(0, 255, 0) Next i End Sub
- এই VBA কোড ডেটা ফরম্যাট করে এবং কলাম H-এ ১০০-এর চেয়ে বড় মানগুলো হাইলাইট করে
- ওয়ার্কবুক সেভ করুন
- এখন, এই প্রসিডিউর একটি ম্যাক্রো হিসেবে উপলব্ধ
- F5 চাপুন বা Run ক্লিক করুন

ম্যাক্রো ও প্রসিডিউরের সাথে সম্পর্ক:
- মডিউল হোল্ড করে প্রসিডিউর
- ম্যাক্রো হলো Sub procedure যা মডিউলে স্টোর থাকে
- মডিউল ছাড়া ম্যাক্রো? সম্ভব নয়, কারণ সব VBA কোড কোনো না কোনো টাইপের মডিউলের ভিতরে থাকে।
কখন ব্যবহার করবেন: যেকোনো VBA প্রজেক্টের জন্য। ছোট টাস্কের জন্য একটি মডিউল দিয়ে শুরু করুন; বড় প্রজেক্টের জন্য একাধিক ব্যবহার করুন ক্লাটার এড়াতে।
সেগুলো কীভাবে ফিট হয়: Macro → Procedure → Module
এক Macro হলো Sub procedure-এর ইউজার-ফেসিং টার্ম। Procedure-ها কোড ব্লক। Module-ها প্রসিডিউরগুলো অর্গানাইজ করার জন্য গ্রুপ করে।
ওয়ার্কফ্লো উদাহরণ:
- একটি ম্যাক্রো রেকর্ড করুন → এটি একটি নতুন মডিউলে (প্রায়শই "Module1") একটি Sub procedure তৈরি করে
- প্রসিডিউরটি এডিট করে রিফাইন করুন
- একই মডিউলে আরও প্রসিডিউর যোগ করুন বা নতুন মডিউল তৈরি করুন

সেরা অভ্যাস এবং টিপস
- নেমিং কনভেনশন: Sub CalculateTotalSales() এর মত ডেসক্রিপ্টিভ নাম ব্যবহার করুন Sub Macro1() এর বদলে। স্পেস এড়িয়ে CamelCase ব্যবহার করুন।
- এরর হ্যান্ডলিং: প্রসিডিউরগুলোর মধ্যে On Error Resume Next বা On Error GoTo ErrorHandler যোগ করুন সেগুলো আরও রবাস্ট করার জন্য।
- সিকিউরিটি: ম্যাক্রো কোড রান করতে পারে, তাই শুধু ট্রাস্টেড সোর্স থেকে ইনেবল করুন (File >> Options >> Trust Center >> Macro Settings)।
- ডিবাগিং: VBA এডিটরে কোড ধাপে ধাপে যেতে F8 ব্যবহার করুন।
- অ্যাডভান্সড টিপ: মডিউল এক্সপোর্ট করুন (.bas ফাইল) অন্য ওয়ার্কবুকে কোড রিযুজ করার জন্য।
- সাধারণ পিটফল: এক্সেল ম্যাক্রোকে অফিস স্ক্রিপ্টস (নতুন এক্সেল ভার্সনে জাভাস্ক্রিপ্ট-ভিত্তিক) দিয়ে কনফিউজ করবেন না। VBA ডেস্কটপ অটোমেশনের জন্য আরও শক্তিশালী।
উপসংহার
এই টিউটোরিয়াল অনুসরণ করে, আপনি এক্সেল VBA টার্মিনোলজি বুঝতে পারবেন: Macro vs Module vs Procedure। এই টার্মগুলো বুঝলে আপনি VBA দক্ষতার সাথে ব্যবহার করতে পারবেন। এটি আপনাকে VBA ডকুমেন্টেশন নেভিগেট করতে, অন্যান্য এক্সেল ইউজারের সাথে যোগাযোগ করতে, এবং আপনার কোড আরও কার্যকরভাবে অর্গানাইজ করতে সাহায্য করবে। ম্যাক্রো রেকর্ড করে প্রসিডিউর একশনে দেখুন, তারপর আপনার প্রজেক্ট বড় হলে সেগুলো মডিউলে অর্গানাইজ করুন। আপনার নিজের স্প্রেডশিটে একটি সিম্পল টাস্ক অটোমেট করে প্র্যাকটিস করুন, এবং আপনি দ্রুত VBA-এর ক্ষমতা দেখতে পাবেন।