VBA তে Custom Events এবং Event Handlers তৈরি করা
VBA তে Custom Events এবং Event Handlers ব্যবহার করে আপনি এমন ইভেন্ট তৈরি করতে পারেন যা আপনার কোডের কার্যকারিতা বা অবজেক্টের পরিবর্তন অনুযায়ী ট্রিগার হয়। VBA তে ইভেন্ট হলো এমন একটি অ্যাকশন বা ঘটনা যা কিছু নির্দিষ্ট পরিস্থিতির কারণে ঘটে, যেমন একটি বোতাম ক্লিক করা, ডেটা পরিবর্তন করা, অথবা একটি সেল নির্বাচন করা। Custom Events এমন ইভেন্ট যা আপনি নিজেই তৈরি করেন এবং Event Handlers হলো সেই ইভেন্টগুলো পরিচালনা করার জন্য কোড ব্লক।
1. Custom Events তৈরি করা
Custom Event হলো এমন একটি ইভেন্ট যা একটি ক্লাস মডিউলে তৈরি করা হয় এবং যা ক্লাসের অবজেক্ট থেকে ট্রিগার হয়। এটি সাধারণত অবজেক্টের কোন প্রপার্টি পরিবর্তন হলে বা কোন ক্রিয়া ঘটলে ট্রিগার হয়।
Custom Event তৈরি করার পদ্ধতি:
- Class Module তৈরি করা:
প্রথমে, একটি Class Module তৈরি করতে হবে, যেখানে আপনি Custom Event ডিফাইন করবেন। - Event ডিফাইন করা:
আপনার ক্লাস মডিউলে একটি ইভেন্ট ডিফাইন করতে হবে। - Raise Event ব্যবহার করা:**
যখন ইভেন্টটি ট্রিগার করতে চান তখন RaiseEvent পদ্ধতি ব্যবহার করা হয়।
2. উদাহরণ: Custom Event তৈরি এবং ব্যবহার
Step 1: Class Module তৈরি করা
প্রথমে একটি নতুন ক্লাস মডিউল তৈরি করুন (যেমন Person নামে), এবং সেখানে একটি Custom Event তৈরি করুন।
' Class Module: Person
Public Name As String
Public Age As Integer
' Custom Event Declaration
Public Event AgeChanged(ByVal newAge As Integer)
' Method to change age and trigger the event
Public Sub SetAge(newAge As Integer)
If newAge <> Age Then
Age = newAge
RaiseEvent AgeChanged(newAge) ' Trigger the custom event
End If
End Subএখানে:
- Name এবং Age প্রোপার্টি ব্যবহারকারী ইনপুট হিসেবে রয়েছে।
- AgeChanged একটি Custom Event যেটি RaiseEvent AgeChanged(newAge) ব্যবহার করে ট্রিগার হয় যখন Age পরিবর্তিত হয়।
Step 2: Standard Module তে Event Handler তৈরি করা
এখন একটি Standard Module তৈরি করুন, যেখানে আমরা এই Custom Event কে হ্যান্ডেল করব।
Sub TestPersonEvent()
Dim p As Person
Set p = New Person
' Register the event handler
AddHandler p.AgeChanged, AddressOf HandleAgeChanged
' Change age and trigger the event
p.SetAge 30
p.SetAge 35
End Sub
' Event Handler
Sub HandleAgeChanged(ByVal newAge As Integer)
MsgBox "Age has changed to: " & newAge
End Subএখানে:
- TestPersonEvent সাবরুটিনে একটি Person অবজেক্ট তৈরি করা হয়েছে।
- AddHandler ব্যবহার করে AgeChanged ইভেন্টে একটি Event Handler যুক্ত করা হয়েছে।
- HandleAgeChanged মেথডটি ইভেন্টটিকে হ্যান্ডল করার জন্য ব্যবহার করা হয়েছে।
3. Event Handlers (ইভেন্ট হ্যান্ডলার)
Event Handler হলো সেই কোড যা কোনো নির্দিষ্ট ইভেন্ট ঘটে গেলে এক্সিকিউট হয়। যখন কোনো ইভেন্ট trigger হয়, তখন সংশ্লিষ্ট Event Handler রান করে এবং প্রয়োজনীয় কাজ সম্পন্ন করে।
VBA তে কিছু সাধারণ Event Handler উদাহরণ:
- Worksheet_Change Event (ওয়ার্কশীট পরিবর্তন ইভেন্ট):
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
MsgBox "A1 cell has changed!"
End If
End Subএখানে:
- Worksheet_Change ইভেন্টটি তখন ট্রিগার হয় যখন শিটে কোন পরিবর্তন হয়।
- যদি A1 সেল পরিবর্তিত হয়, তাহলে একটি মেসেজ বক্স দেখাবে।
- Workbook_Open Event (ওয়ার্কবুক ওপেন ইভেন্ট):
Private Sub Workbook_Open()
MsgBox "Welcome to the workbook!"
End Subএখানে:
- Workbook_Open ইভেন্টটি যখন ওয়ার্কবুক খোলা হয় তখন ট্রিগার হয় এবং একটি মেসেজ বক্স দেখায়।
- Button Click Event (বটন ক্লিক ইভেন্ট):
Private Sub CommandButton1_Click()
MsgBox "Button was clicked!"
End Subএখানে:
- CommandButton1_Click ইভেন্টটি যখন বটনটি ক্লিক করা হয় তখন ট্রিগার হয় এবং একটি মেসেজ বক্স দেখায়।
4. Custom Event এবং Event Handler এর মধ্যে পার্থক্য
| বিষয় | Custom Event | Event Handler |
|---|---|---|
| ডিফাইন করা হয় | ক্লাস মডিউলে ডিফাইন করা হয় | স্ট্যান্ডার্ড মডিউলে ডিফাইন করা হয় |
| ফাংশনালিটি | কোনো নির্দিষ্ট কাজ বা ক্রিয়ার জন্য ইভেন্ট তৈরি করা হয় | ইভেন্ট ট্রিগার হলে কার্যকরী কোড যা ইভেন্ট হ্যান্ডল করে |
| ব্যবহার | অবজেক্টের প্রপার্টি বা ফাংশন পরিবর্তিত হলে ইভেন্ট ট্রিগার করা হয় | একটি নির্দিষ্ট ইভেন্ট ঘটলে (যেমন, বাটন ক্লিক, শিট পরিবর্তন) কোড চালানো হয় |
| উদাহরণ | RaiseEvent AgeChanged(newAge) | Sub HandleAgeChanged(ByVal newAge As Integer) |
উপসংহার
- Custom Events এবং Event Handlers ব্যবহার করে আপনি VBA তে শক্তিশালী এবং ইন্টারেক্টিভ কোড তৈরি করতে পারেন।
- Custom Events একটি ক্লাসের অবজেক্টের মধ্যে ঘটে এমন ইভেন্ট ট্রিগার করতে সাহায্য করে, এবং Event Handlers সেই ইভেন্টগুলিকে পরিচালনা করার জন্য ব্যবহৃত হয়।
- এটি কোডের পুনঃব্যবহারযোগ্যতা এবং সংগঠন উন্নত করতে সাহায্য করে, বিশেষ করে যখন আপনি বড় প্রজেক্টে কাজ করছেন।
Read more