Excel VBA (Macro) ব্যবহার করে একটি ডেটা এন্ট্রি ফর্ম তৈরি করা যায়। এর মাধ্যমে আপনি একটি নির্দিষ্ট ফর্মে তথ্য লিখে একটি বাটনে ক্লিক করলেই সেই তথ্যগুলো স্বয়ংক্রিয়ভাবে নিচে একটি টেবিল বা লিস্টে জমা হবে।
ভিডিওর মূল ধাপগুলো নিচে সহজভাবে দেওয়া হলো:
১. ম্যাক্রো রেকর্ড করা শুরু করুন
প্রথমে Developer ট্যাবে গিয়ে Record Macro-তে ক্লিক করুন। একটি নাম দিন এবং প্রয়োজনে একটি শর্টকাট কি সেট করুন। এখন আপনি যা যা করবেন, এক্সেল তা রেকর্ড করে রাখবে।
২. নতুন রো বা সারি তৈরি করা
আপনার মূল ডেটা টেবিলের একদম উপরের সারিতে রাইট ক্লিক করে Insert-এ ক্লিক করুন। এতে নতুন ডেটা ঢোকানোর জন্য একটি খালি জায়গা তৈরি হবে।
৩. তথ্য কপি ও পেস্ট করা
ফর্মের যে ঘরগুলোতে আপনি তথ্য লিখেছেন (যেমন: নাম, আইডি, বেতন), সেগুলো কপি করুন। এরপর টেবিলের নতুন খালি সারিতে গিয়ে Paste Special থেকে Transpose অপশনটি ব্যবহার করে পেস্ট করুন। এতে লম্বালম্বি তথ্যগুলো পাশাপাশি সারিবদ্ধভাবে বসে যাবে।
৪. ফর্ম পরিষ্কার করা
তথ্যগুলো কপি হয়ে গেলে ফর্মের ঘরগুলো থেকে তথ্যগুলো মুছে দিন (Delete চাপুন), যাতে পরের বার নতুন তথ্য লেখা যায়। এরপর Stop Recording-এ ক্লিক করুন।
৫. একটি বাটন তৈরি করা
Developer ট্যাবের Insert থেকে একটি Button সিলেক্ট করে শিটে ড্র্যাগ করুন। এরপর আপনার রেকর্ড করা ম্যাক্রোটি ওই বাটনের সাথে যুক্ত (Assign) করে দিন।
সুবিধা:
একই কাজ বারবার করতে হয় না।
ভুল হওয়ার সম্ভাবনা কমে যায়।
অল্প সময়ে অনেক বেশি ডেটা এন্ট্রি করা যায়।
এক্সেল VBA ব্যবহার করে একটি সহজ ডেটা এন্ট্রি ফর্ম তৈরি করা বেশ মজাদার কাজ। এটি আপনার ডেটা এন্ট্রিকে আরও দ্রুত এবং নির্ভুল করবে।
নিচে ধাপে ধাপে একটি সহজ গাইড দেওয়া হলো:
ধাপ ১: এক্সেল শিট সেটআপ করা
প্রথমে আপনার এক্সেলের প্রথম সারিতে (Header) কিছু কলামের নাম লিখুন। যেমন:
A1: নাম (Name)
B1: মোবাইল (Mobile)
C1: শহর (City)
ধাপ ২: VBA উইন্ডো ওপেন করা
১. কিবোর্ড থেকে ALT + F11 চাপুন। এতে VBA Editor ওপেন হবে। ২. উপরের মেনু থেকে Insert > UserForm এ ক্লিক করুন। ৩. বাম পাশের Toolbox থেকে নিচের টুলগুলো ব্যবহার করে একটি ফর্ম ডিজাইন করুন:
Label: নাম লেখার জন্য।
TextBox: ডেটা ইনপুট করার জন্য।
CommandButton: ডেটা সেভ করার জন্য।
ধাপ ৩: কোড লেখা
তৈরি করা CommandButton (যেটির নাম সাধারণত CommandButton1 থাকে) এর উপর ডাবল ক্লিক করুন এবং নিচের কোডটি কপি করে পেস্ট করুন:
VBA
Private Sub CommandButton1_Click()
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Sheet1") 'আপনার শিটের নাম এখানে দিন
'পরবর্তী খালি সারি খুঁজে বের করা
iRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Offset(1, 0).Row
'টেক্সটবক্স থেকে ডেটা শিটে পাঠানো
ws.Cells(iRow, 1).Value = Me.TextBox1.Value
ws.Cells(iRow, 2).Value = Me.TextBox2.Value
ws.Cells(iRow, 3).Value = Me.TextBox3.Value
'ডেটা সেভ হওয়ার পর টেক্সটবক্স খালি করা
Me.TextBox1.Value = ""
Me.TextBox2.Value = ""
Me.TextBox3.Value = ""
MsgBox "ডেটা সফলভাবে সেভ হয়েছে!", vbInformation
End Sub
ধাপ ৪: ফর্মটি চালানো
১. VBA এডিটরে থাকা অবস্থায় কিবোর্ড থেকে F5 চাপুন। ২. আপনার সামনে একটি ফর্ম আসবে। সেখানে তথ্য লিখে বাটনে ক্লিক করলেই সেটি অটোমেটিক আপনার এক্সেল শিটে চলে যাবে।
গুরুত্বপূর্ণ টিপস:
File Save: ফাইলটি সেভ করার সময় অবশ্যই Excel Macro-Enabled Workbook (.xlsm) ফরম্যাটে সেভ করবেন, নাহলে কোড কাজ করবে না।
Developer Tab: আপনার এক্সেলে 'Developer' ট্যাবটি চালু না থাকলে File > Options > Customize Ribbon থেকে সেটি অন করে নিতে পারেন।
একটি স্টুডেন্ট লিস্ট (Student List) ম্যানেজমেন্ট সিস্টেমের উদাহরণ দিয়ে এটি শিখতে পারি। এটি ইনভেন্টরির ক্ষেত্রেও একইভাবে কাজ করবে।
ধরে নিন, আমরা ছাত্র-ছাত্রীদের নাম, রোল নম্বর, বিভাগ (Department) এবং মোবাইল নম্বর এন্ট্রি করতে চাই।
১. এক্সেল শিট তৈরি করুন
প্রথমে আপনার এক্সেল শিটের (Sheet1) প্রথম সারিতে নিচের হেডারগুলো লিখুন:
A1: Student Name
B1: Roll Number
C1: Department
D1: Mobile
২. ইউজার ফর্ম ডিজাইন (UserForm)
VBA এডিটরে (ALT + F11) গিয়ে একটি UserForm ইনসার্ট করুন এবং সেখানে নিচের কন্ট্রোলগুলো সাজান:
TextBox1: নাম এন্ট্রির জন্য।
TextBox2: রোলের জন্য।
ComboBox1: বিভাগের জন্য (এটি ড্রপডাউন হিসেবে কাজ করবে)।
TextBox3: মোবাইলের জন্য।
CommandButton1: 'Save Data' লেখার জন্য।
৩. অ্যাডভান্সড কোড (Copy & Paste)
এই কোডটি আপনার ফরমেটকে আরও প্রফেশনাল করবে। এটি খালি ঘর থাকলে সতর্ক করবে এবং ড্রপডাউন লিস্টও তৈরি করে দেবে।
বাটনের জন্য কোড (Double click on CommandButton1):
VBA
Private Sub CommandButton1_Click()
Dim ws As Worksheet
Dim nextRow As Long
Set ws = Worksheets("Sheet1")
' ফর্ম খালি আছে কি না চেক করা
If Me.TextBox1.Value = "" Or Me.TextBox2.Value = "" Then
MsgBox "দয়া করে নাম এবং রোল নম্বর লিখুন!", vbExclamation
Exit Sub
End If
' পরবর্তী খালি সারি খুঁজে বের করা
nextRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1
' ডেটা ট্রান্সফার
With ws
.Cells(nextRow, 1).Value = Me.TextBox1.Value
.Cells(nextRow, 2).Value = Me.TextBox2.Value
.Cells(nextRow, 3).Value = Me.ComboBox1.Value
.Cells(nextRow, 4).Value = Me.TextBox3.Value
End With
' এন্ট্রি হওয়ার পর ফর্ম ক্লিয়ার করা
Me.TextBox1.Value = ""
Me.TextBox2.Value = ""
Me.ComboBox1.Value = ""
Me.TextBox3.Value = ""
MsgBox "স্টুডেন্ট ডেটা সফলভাবে যোগ করা হয়েছে!", vbInformation
End Sub
বিভাগের ড্রপডাউন লিস্টের জন্য কোড (Double click on Form):
ইউজার ফর্মটি ওপেন হওয়ার সাথে সাথেই যাতে ড্রপডাউন অপশনগুলো আসে, সেজন্য ফর্মের ফাঁকা জায়গায় ডাবল ক্লিক করে এই কোডটি দিন:
VBA
Private Sub UserForm_Initialize()
' ড্রপডাউনে বিভাগের নাম যোগ করা
With ComboBox1
.AddItem "Science"
.AddItem "Arts"
.AddItem "Commerce"
End With
End Sub
৪. কিবোর্ড শর্টকাট দিয়ে ফর্ম ওপেন করা
আপনি যদি চান একটি বাটন ক্লিক করলেই ফর্মটি সামনে আসবে, তবে একটি Module ইনসার্ট করে নিচের কোডটি লিখুন:
VBA
Sub OpenMyForm()
UserForm1.Show
End Sub
এখন এক্সেল শিটে গিয়ে একটি Shape ইনসার্ট করুন এবং রাইট ক্লিক করে 'Assign Macro' থেকে OpenMyForm সিলেক্ট করে দিন।
আপনার জন্য টিপস:
আপনি যদি ইনভেন্টরির জন্য করতে চান, তবে শুধু 'Name' এর জায়গায় 'Product Name' এবং 'Roll' এর জায়গায় 'Quantity' লিখে দিলেই হবে।
একটি প্রফেশনাল ডেটা এন্ট্রি ফর্মে Search এবং Delete বাটন থাকা খুবই জরুরি। এটি আপনার কাজকে অনেক সহজ করে দেবে। নিচে ধাপে ধাপে পদ্ধতিটি দেওয়া হলো:
১. ফর্ম ডিজাইন আপডেট করুন
আপনার বিদ্যমান UserForm-এ আরও দুটি CommandButton যোগ করুন:
CommandButton2: এর নাম দিন "Search"
CommandButton3: এর নাম দিন "Delete"
২. Search বাটনের কোড
সার্চ বাটনের কাজ হবে Roll Number (অথবা Product ID) দিয়ে ডেটা খুঁজে বের করা এবং ফর্মের অন্যান্য ঘরে সেই তথ্যগুলো দেখানো।
Search বাটনে ডাবল ক্লিক করে নিচের কোডটি লিখুন:
VBA
Private Sub CommandButton2_Click()
Dim ws As Worksheet
Dim x As Long, lastRow As Long
Dim found As Boolean
Set ws = Worksheets("Sheet1")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
found = False
' রোল নম্বর খালি কি না চেক করা
If Me.TextBox2.Value = "" Then
MsgBox "অনুগ্রহ করে সার্চ করার জন্য রোল নম্বরটি লিখুন!", vbExclamation
Exit Sub
End If
' লুপ চালিয়ে ডেটা খোঁজা (রোল নম্বর কলাম B বা ২ নম্বর কলামে আছে)
For x = 2 To lastRow
If ws.Cells(x, 2).Value = Me.TextBox2.Value Then
Me.TextBox1.Value = ws.Cells(x, 1).Value ' নাম
Me.ComboBox1.Value = ws.Cells(x, 3).Value ' বিভাগ
Me.TextBox3.Value = ws.Cells(x, 4).Value ' মোবাইল
found = True
Exit For
End If
Next x
If found = False Then
MsgBox "দুঃখিত, এই রোলের কোনো তথ্য পাওয়া যায়নি।", vbInformation
End If
End Sub
৩. Delete বাটনের কোড
সার্চ করার পর যদি আপনি সেই রেকর্ডটি মুছে ফেলতে চান, তবে এই বাটনটি কাজ করবে।
Delete বাটনে ডাবল ক্লিক করে নিচের কোডটি লিখুন:
VBA
Private Sub CommandButton3_Click()
Dim ws As Worksheet
Dim x As Long, lastRow As Long
Dim confirm As VBA.VbMsgBoxResult
Set ws = Worksheets("Sheet1")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
If Me.TextBox2.Value = "" Then
MsgBox "প্রথমে তথ্য সার্চ করে নিন!", vbExclamation
Exit Sub
End If
' ডিলিট করার আগে নিশ্চিত হওয়া
confirm = MsgBox("আপনি কি নিশ্চিতভাবে এই রেকর্ডটি মুছে ফেলতে চান?", vbYesNo + vbQuestion, "Confirm Delete")
If confirm = vbYes Then
For x = 2 To lastRow
If ws.Cells(x, 2).Value = Me.TextBox2.Value Then
ws.Rows(x).Delete ' পুরো রো মুছে ফেলা
MsgBox "ডেটা সফলভাবে ডিলিট করা হয়েছে!", vbInformation
' ফর্ম খালি করা
Me.TextBox1.Value = ""
Me.TextBox2.Value = ""
Me.ComboBox1.Value = ""
Me.TextBox3.Value = ""
Exit For
End If
Next x
End If
End Sub
৪. এটি কীভাবে ব্যবহার করবেন?
১. সার্চ করতে: প্রথমে TextBox2-এ রোল নম্বরটি লিখুন এবং Search বাটনে ক্লিক করুন। দেখবেন অন্য সব ঘরে অটোমেটিক তথ্য চলে এসেছে। ২. ডিলিট করতে: তথ্য সার্চ করার পর শুধু Delete বাটনে ক্লিক করুন এবং 'Yes' দিন। শিট থেকে ওই লাইনটি মুছে যাবে।
টিপস: মনে রাখবেন, আপনার এক্সেল শিটের কলাম নম্বর (১, ২, ৩...) এবং কোডের কলাম নম্বর যেন মিল থাকে। আপনার রোল নম্বর যদি B কলামে থাকে, তবে কোডে Cells(x, 2) ব্যবহার করা হয়েছে।পড়ার জন্য অসংখ্য ধন্যবাদ।। ভালো লাগলে অবশ্যই লাইক শেয়ার করুন।।লেখক : আব্দুল মুসরেফ খাঁন (কনকপুর)পাঁশকুড়া : পূর্বমেদিনীপুর : email :lib.pbc@gmail.com

0 Comments