প্রায় সকল মাইক্রোসফট অফিস প্রোডাক্টে চলমান VBA প্রোগ্রামিং প্ল্যাটফর্ম যে কেউ তাদের প্রোডাক্ট ব্যবহারের গুণমান বাড়াতে ব্যবহার করতে পারে সেরা টুলের একটি।
বেগinners এর জন্য এই VBA গাইড আপনাকে দেখাবে কীভাবে আপনার অফিস অ্যাপ্লিকেশনে Developer মেনু যোগ করবেন, কীভাবে VBA এডিটর উইন্ডোতে যাবেন, এবং কীভাবে বেসিক VBA স্টেটমেন্ট এবং লুপ কাজ করে যাতে আপনি এক্সেল, ওয়ার্ড, পাওয়ারপয়েন্ট, আউটলুক, এবং ওয়াননোটে VBA ব্যবহার শুরু করতে পারেন।
এই VBA গাইড লেটেস্ট ভার্সনের মাইক্রোসফট অফিস প্রোডাক্ট ব্যবহার করে। আপনার যদি পুরানো ভার্সন থাকে তবে স্ক্রিনশট থেকে কিছু স্লাইট পার্থক্য দেখতে পেতে পারেন।
VBA এডিটর কীভাবে ইনেবল এবং ব্যবহার করবেন
এই গাইডে ব্যবহৃত যেকোনো অফিস প্রোডাক্টে আপনি লক্ষ্য করতে পারেন যে আপনার কাছে রেফারেন্সকৃত Developer মেনু নেই। Developer মেনু শুধু এক্সেল, ওয়ার্ড, আউটলুক, এবং পাওয়ারপয়েন্টে উপলব্ধ। ওয়াননোট অ্যাপ্লিকেশনের ভিতর থেকে VBA কোড এডিট করার টুল দেয় না, কিন্তু আপনি ওয়াননোট API রেফারেন্স করে অন্যান্য অফিস প্রোগ্রাম থেকে ওয়াননোটের সাথে ইন্টারঅ্যাক্ট করতে পারেন।
আপনি কীভাবে এটি করবেন সেটি আমাদের আসন্ন এডভান্সড VBA গাইডে শিখবেন।
- যেকোনো অফিস প্রোডাক্টে Developer মেনু ইনেবল করতে, File মেনু নির্বাচন করুন, এবং বাম নেভিগেশন মেনু থেকে Options নির্বাচন করুন।
- আপনি একটি অপশনস মেনু পপ-আপ দেখবেন। বাম নেভিগেশন মেনু থেকে Customize Ribbon নির্বাচন করুন।
বাম তালিকায় সেই অফিস অ্যাপ্লিকেশনে উপলব্ধ সব মেনু এবং মেনু কমান্ড থাকে। ডান তালিকায় সেগুলো থাকে যা বর্তমানে উপলব্ধ বা এক্টিভেটেড।
- আপনি ডান তালিকায় Developer দেখতে পাবেন, কিন্তু এটি এক্টিভেটেড থাকবে না। শুধু চেকবক্সটি সিলেক্ট করুন Developer মেনু এক্টিভেট করতে।
- যদি আপনি ডানে Developer উপলব্ধ না দেখেন, তবে বাম দিকের Choose commands from ড্রপডাউনকে All Commands-এ পরিবর্তন করুন। তালিকা থেকে Developer খুঁজে বের করুন এবং সেন্টারে Add>> নির্বাচন করুন Ribbon-এ সেই মেনু যোগ করতে।
- শেষে OK নির্বাচন করুন।
- Developer মেনু এক্টিভ হলে, আপনি আপনার মেইন অ্যাপ্লিকেশন উইন্ডোতে ফিরে যেতে পারেন এবং শীর্ষ মেনু থেকে Developer নির্বাচন করতে পারেন।
- তারপর রিবনে Controls গ্রুপ থেকে View Code নির্বাচন করুন VBA এডিটর উইন্ডো খুলতে।
এটি VBA এডিটর উইন্ডো খুলবে যেখানে আপনি পরবর্তী সেকশনে শিখবেন কোড টাইপ করতে পারবেন।
- আপনি প্রতিদিন যে অফিস অ্যাপ্লিকেশনগুলো ব্যবহার করেন সেখানে Developer মেনু যোগ করার চেষ্টা করুন। একবার আপনি VBA এডিটর উইন্ডো খোলার সাথেবিধা পেলে, এই গাইডের পরবর্তী সেকশনে যান।
বেগinners এর জন্য সাধারণ VBA প্রোগ্রামিং টিপস
আপনি লক্ষ্য করবেন VBA এডিটর খোলার সাথে বাম প্যানেলের নেভিগেশন অপশনগুলো এক অফিস অ্যাপ্লিকেশন থেকে অন্যর ভিন্ন দেখাচ্ছে।
এটি কারণ যে, আপনি যেখানে VBA কোড রাখতে পারেন সেই উপলব্ধ অবজেক্টগুলো অ্যাপ্লিকেশনে কোন অবজেক্ট আছে তার ওপর নির্ভর করে। উদাহরণস্বরূপ, এক্সেলে, আপনি ওয়ার্কবুক বা শিট অবজেক্টে VBA কোড যোগ করতে পারেন। ওয়ার্ডে, আপনি ডকুমেন্টে VBA কোড যোগ করতে পারেন। পাওয়ারপয়েন্টে, শুধু মডিউলসে।
তাই, ভিন্ন মেনুগুলো দেখে আশ্চর্য করবেন না। VBA কোডের কাঠামো এবং সিনট্যাক্স সব অ্যাপ্লিকেশনে একই। একমাত্র পার্থক্য হলো আপনি কোন অবজেক্ট রেফারেন্স করতে পারেন এবং সেই অবজেক্টগুলোর ওপর VBA কোডের মাধ্যমে কোন অ্যাকশন নিতে পারেন।
VBA কোড লেখার সময় আপনি ব্যবহার করতে পারবেন এমন সবচেয়ে সাধারণ কাঠামো এবং সিনট্যাক্স নিয়ে দেখতে থাকা আগে, আসুন বিভিন্ন অবজেক্ট এবং সেগুলোর ওপর VBA কোডের মাধ্যমে নেওয়া যাওয়া অ্যাকশনগুলো দেখি।
VBA কোড কোথায় রাখবেন
VBA এডিটরে থাকাকালীন, আপনাকে এডিটিং উইন্ডোর শীর্ষে দুটি ড্রপডাউন বক্স ব্যবহার করতে হবে যাতে আপনি বুঝতে পারেন কোন অবজেক্টে কোডটি অ্যাটাচ করতে চান, এবং কখন কোডটি চালাতে চান।
উদাহরণস্বরূপ, এক্সেলে, আপনি Worksheet এবং Activate বেছে নিলে, কোডটি যখনই ওয়ার্কশীট খোলা হবে তখনই চলবে।
আপনার VBA কোড চালানোর জন্য অন্যান্য ওয়ার্কশীট অ্যাকশনগুলোর মধ্যে রয়েছে যখন ওয়ার্কশীট পরিবর্তন হয়, যখন এটি বন্ধ হয় (ডিএ্যাক্টিভেট), যখন ওয়ার্কশীট ক্যালকুলেশন চলে, এবং আরও অনেক কিছু।
আপনি এডিটরে VBA কোড যোগ করার সময়, সর্বদা নিশ্চিত করুন যে আপনি আপনার VBA কোডটি সঠিক অবজেক্টে এবং সঠিক অ্যাকশন ব্যবহার করে রাখছেন যা আপনি কোডটি ট্রিগার করতে চান।
VBA IF স্টেটমেন্ট
IF স্টেটমেন্ট VBA-এ ঠিক অন্য যেকোনো প্রোগ্রামিং ল্যাঙ্গুয়েজের মতোই কাজ করে।
IF স্টেটমেন্টের প্রথম অংশে দেখা হয় কোন শর্ত বা শর্তের সমষ্টি সত্য কিনা। এই শর্তগুলো AND বা OR অপারেটর দিয়ে जोড়া দিয়ে রাখা যাবে।
একটি উদাহরণ হবে স্প্রেডশীটে একটি গ্রেড দেখা যে এটি "পাসিং" গ্রেডের ওপর নিচে আছে কিনা, এবং পাস বা ফেইল স্ট্যাটাস অন্য একটি সেলে অ্যাসাইন করা।
If Cells(2, 2) > 75 Then Cells(2, 3) = "Pass" Else Cells(2, 3) = "Fail"
আপনি যদি পুরো স্টেটমেন্ট এক লাইনে না চান, তবে আপনি লাইনের শেষে "_" চিহ্ন যোগ করে একাধিক লাইনে ভাগ করতে পারেন।
If Cells(2, 2) > 75 Then _
Cells(2, 3) = "Pass" Else _
Cells(2, 3) = "Fail"
এই টেকনিক ব্যবহার করলে কোড অনেক সহজে পড়া এবং ডিবাগ করা যায়।
VBA For Next লুপ
IF স্টেটমেন্ট সিঙ্গেল কমপেরিজনের জন্য দারুণ, যেমন উপরের উদাহরণে একটি সেল দেখা। কিন্তু আপনি যদি পুরো রেঞ্জের সেলের মধ্য দিয়ে ঘুরে প্রতিটিতে একই IF স্টেটমেন্ট চালাতে চান?
তब আপনাকে একটি FOR লুপ লাগবে।
এটি করতে, আপনাকে একটি রেঞ্জের দৈর্ঘ্য ব্যবহার করতে হবে, এবং ডেটা ধারণকারী রো সংখ্যা অনুযায়ী সেই দৈর্ঘ্যের মাধ্যমে লুপ চালাতে হবে।
এটি করতে, আপনাকে রেঞ্জ এবং সেল ভেরিয়েবল ডিফাইন করতে হবে, এবং তাদের মাধ্যমে লুপ চালাতে হবে। আপনাকে একটি কাউন্টারও ডিফাইন করতে হবে যাতে আপনি উপযুক্ত রোতে ফলাফল আউটপুট করতে পারেন। তাই আপনার VBA কোড প্রথমে এই লাইনটি থাকবে।
Dim rng As Range, cell As Range
Dim rowCounter as Integer
রেঞ্জের আকার নিম্নরূপ ডিফাইন করুন।
Set rng = Range("B2:B7")
rowCounter = 2
শেষে, আপনি আপনার FOR লুপ তৈরি করতে পারেন যাতে সেই রেঞ্জের প্রতিটি সেলে ধাপে ধাপে গিয়ে একই কমপেরিজন করে।
For Each cell In rng If cell.Value > 75 Then _ Cells(rowCounter, 3) = "Pass" Else _ Cells(rowCounter, 3) = "Fail" rowCounter = rowCounter + 1 Next cell
এই VBA স্ক্রিপ্ট চালানো হলে, আপনি আসল স্প্রেডশীটে ফলাফল দেখতে পাবেন।
VBA While লুপ
While লুপও FOR লুপের মতো একটি সিরিজ স্টেটমেন্টের মাধ্যমে লুপ চলে, কিন্তু লুপ চালানোর শর্ত হলো একটি শর্ত সত্য থাকা।
উদাহরণস্বরূপ, আপনি উপরের FOR লুপটিকে WHILE লুপ হিসেবে লিখতে পারেন, শুধু rowCounter ভেরিয়েবল ব্যবহার করে নিচের মতো।
While rowCounter < rng.Count + 2 If Cells(rowCounter, 2) > 75 Then _ Cells(rowCounter, 3) = "Pass" Else _ Cells(rowCounter, 3) = "Fail" rowCounter = rowCounter + 1 Wend
নোট: rng.Count + 2 টার্মিনেটিং লিমিটটি প্রয়োজন কারণ রো কাউন্টার ২ থেকে শুরু হয় এবং ডেটা শেষ হওয়া রো ৭-এ শেষ হতে হবে। যাইহোক, রেঞ্জ (B2:B7)-এর কাউন্ট শুধু ৬, এবং While লুপটি শুধু তখন শেষ হবে যখন কাউন্টার কাউন্টার থেকে বড় হবে - তাই শেষ rowCounter ভ্যালু ৮ হতে হবে (অর্থাৎ rng.Count + 2)।
আপনি While লুপটি নিচের মতোও সেটআপ করতে পারেন:
While rowCounter <= rng.Count + 1
আপনি শুধু রেঞ্জ কাউন্ট (৬) কে ১ দ্বারা ইনক্রিমেন্ট করতে পারেন, কারণ একবার rowCounter ভেরিয়েবল ডেটার শেষে (রো ৭) পৌঁছালে, লুপটি শেষ হতে পারে।
VBA Do While এবং Do Until লুপ
Do While এবং Do Until লুপগুলি While লুপের téměř সমান, কিন্তু কিছুটা ভিন্নভাবে কাজ করে।
- While Loop লুপের শুরুতে একটি শর্ত সত্য কিনা চেক করে।
- Do-While Loop লুপের স্টেটমেন্টগুলো এক্সিকিউট হওয়ার পর একটি শর্ত সত্য কিনা চেক করে।
- Do-Until Loop লুপ এক্সিকিউট হওয়ার পর একটি শর্ত এখনও মিথ্যা কিনা চেক করে।
এই ক্ষেত্রে আপনি উপরের While লুপটিকে নিচের মতো Do-While লুপ হিসেবে রিরাইট করতে পারেন।
Do If Cells(rowCounter, 2) > 75 Then _ Cells(rowCounter, 3) = "Pass" Else _ Cells(rowCounter, 3) = "Fail" rowCounter = rowCounter + 1 Loop While rowCounter < rng.Count + 2
এই কেসে লজিক অনেক পরিবর্তন হয় না, কিন্তু আপনি যদি চান লজিক কমপেরিজন সকল স্টেটমেন্ট চালানোর পরে হয় (যাতে সকলো কমপেরিজনের দিকে না তাকিয়ে কমপেরিজন থেকে বাদ না দিয়ে কমপেরিজন রান হয় কমপেরিজন কমপেরিজন) তবে Do-While বা Do-Until লুপ সঠিক অপশন।
VBA Select Case স্টেটমেন্ট
VBA কোড কাঠামো বানানোর জন্য আপনাকে বুঝতে হবে এমন শেষ লজিক্যাল স্টেটমেন্ট হলো Select Case স্টেটমেন্ট।
উপরের উদাহরণে, ধরুন আপনি একটি গ্রেডিং মেথড চান যা শুধু পাস ফেইল নয়। বরং, আপনি A থেকে F পর্যন্ত লেটার গ্রেড অ্যাসাইন করতে চান।
আপনি নিচের Select Case স্টেটমেন্ট দিয়ে এটি করতে পারেন:
For Each cell In rng Select Case cell Case 95 To 100 Cells(rowCounter, 3) = "A" Case 85 To 94 Cells(rowCounter, 3) = "B" Case 75 To 84 Cells(rowCounter, 3) = "C" Case 65 To 74 Cells(rowCounter, 3) = "D" Case 0 To 64 Cells(rowCounter, 3) = "F" End Select rowCounter = rowCounter + 1 Next cell
এই VBA স্ক্রিপ্ট চালানোর পর ফলাফল স্প্রেডশীট নিচের চিত্রের মতো দেখাবে।
এখন আপনি আপনার মাইক্রোসফট অফিস অ্যাপ্লিকেশনগুলোতে VBA ব্যবহার শুরু করার জন্য যা যা জানতে হবে সেটি শিখে ফেলেছেন।