Excel VBA (Macro) ব্যবহার করে একটি ডেটা এন্ট্রি ফর্ম তৈরি করা

 



Excel VBA (Macro) ব্যবহার করে একটি ডেটা এন্ট্রি ফর্ম তৈরি করা

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

 

 


Post a Comment

0 Comments