ড্রপডাউন লিস্ট এক্সেল-রelated বিভিন্ন কাজ করার জন্য খুব উপকারী ফিচার। VBA ইমপ্লিমেন্ট করা এক্সেলে যেকোনো অপারেশন চালানোর সবচেয়ে ইফেক্টিভ, দ্রুত এবং নিরাপদ পদ্ধতি। এই আর্টিকেলে আমরা আপনাকে VBA ম্যাক্রো দিয়ে এক্সেলে ড্রপ ডাউন লিস্ট থেকে ভ্যালু সিলেক্ট করার ২টি ইফেক্টিভ মেথড দেখাব।
ওয়ার্কবুক ডাউনলোড করুন
আপনি এখান থেকে ফ্রি প্র্যাকটিস এক্সেল ওয়ার্কবুক ডাউনলোড করতে পারেন।
এক্সেলে জেনেরিক লিস্ট থেকে ড্রপডাউন লিস্ট তৈরি
কোডিং সেকশনে যাওয়ার আগে, এক্সেলে জেনেরিক লিস্ট থেকে ড্রপডাউন লিস্ট তৈরি করার একটি খুব সহজ উপায় শিখি। যাতে পরে আমরা এই আর্টিকেলের উদাহরণ হিসেবে আমরা যা ড্রপডাউন লিস্ট তৈরি করেছি সেটি ব্যবহার করতে পারি।
নিচে আমাদের এক্সেল ওয়ার্কশীটে থাকা জেনেরিক লিস্টটি দেওয়া আছে। লিস্টে রিপিটিভ ভ্যালু রয়েছে (যেমন Cell B7 এবং B9-এ Apple)।

আমরা দেখব কীভাবে জেনেরিক লিস্ট থেকে ভ্যালুগুলো নিয়ে (যেমন Grapes, Orange, Apple, Mango, Apple) একটি ড্রপডাউন লিস্ট তৈরি করা যায়।
ধাপসমূহ:
- প্রথমে, ড্রপডাউন লিস্ট স্টোর করার জন্য যেকোনো সেলে ক্লিক করুন (আমাদের কেসে Cell D4)।
- তারপর Data ট্যাবে ক্লিক করুন।
- उसके बाद, রিবনের Data Tools গ্রুপ থেকে Data Validation সিলেক্ট করুন।

- একটি Data Validation পপ-আপ বক্স আসবে। সেখান থেকে,
- Allow ক্রাইটেরিয়ায় List সিলেক্ট করুন।
- Source ক্রাইটেরিয়ায়, ড্রপডাউন লিস্টের ভ্যালুهای থাকা রেঞ্জটি ড্র্যাগ করুন (আমাদের কেসে B5:B9)।

- পরিবর্তে OK চাপুন।
নিচের চিত্রটি দেখুন।

Cell D4-এ একটি ড্রপডাউন লিস্ট তৈরি হয়েছে যেটি ভ্যালুগুলো ধারণ করে (যেমন Grapes, Orange, Apple, Mango, Apple) জেনেরিক লিস্ট থেকে (রেঞ্জ B5:B9) রিট্রিভ করা।
VBA-তে ড্রপ ডাউন লিস্ট থেকে ভ্যালু সিলেক্ট করার ২টি মেথড
এই সেকশনে আপনি শিখবেন কীভাবে VBA দিয়ে এক্সেলে রিপিটিভ এবং নন-রিপিটিভ ভ্যালু দুটোই ড্রপডাউন লিস্ট থেকে মাল্টিপল সিলেক্ট করা যায়।
১. রিপিটিভ ভ্যালুসহ ড্রপ ডাউন লিস্ট থেকে মাল্টিপল ভ্যালু সিলেক্ট করতে VBA এম্বেড করুন
আমাদের ডেটাসেটে রিপিটিভ ভ্যালু রয়েছে। যদি আপনি চান আপনার ড্রপডাউন লিস্ট সব ভ্যালু ধরতে পারে বা ভ্যালু ডাবল হোক না হোক, তবে নিচের ধাপগুলো অনুসরণ করুন।
ধাপসমূহ:
- শुरुआতে, আপনার কিবোর্ডে Alt + F11 চাপুন বা Developer -> Visual Basic ট্যাবে যান Visual Basic Editor খোলার জন্য।

- এরপর, উপযুক্ত শীটের নামে রাইট-ক্লিক করুন এবং আসা অপশন লিস্ট থেকে View Code সিলেক্ট করুন।

- তারপর, নিচের কোডটি কপি করে কোড উইন্ডোতে পেস্ট করুন।
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ValueA As String
Dim ValueB As String
On Error GoTo Exitsub
If Target.Address = "$D$4" Then
If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub
Else: If Target.Value = "" Then GoTo Exitsub
Else
Application.EnableEvents = False
ValueB = Target.Value
Application.Undo
ValueA = Target.Value
If ValueA = "" Then
Target.Value = ValueB
Else
Target.Value = ValueA & ", " & ValueB
End If
End If
End If
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
End Sub

- এই কোডটি রান করবেন না, সেভ করুন।
- এখন রুচির ওয়ার্কশীতে ফিরে যান। যদি Cell D4-এ তৈরি ড্রপডাউন লিস্টে ক্লিক করুন, তবে আপনি দেখবেন আপনি এখন ড্রপডাউন থেকে মাল্টিপল ভ্যালু সিলেক্ট করতে পারছেন (নিচের GIF-টি দেখুন)।
উপরের GIF-এ দেখা যাচ্ছে, এই VBA কোড দিয়ে আপনি এক নির্দিষ্ট ভ্যালু একাধিক বার সিলেক্ট করতে পারেন। এই সেকশনে দেওয়া ম্যাক্রো কোড ড্রপডাউন লিস্টকে সব ধরনের ভ্যালু সিলেক্ট করতে দেবে।
VBA কোড ব্যাখ্যা
Dim ValueA As String
Dim ValueB As String
ভেরিয়েবল নাম ডিফাইন করা।
On Error GoTo Exitsub
যদি এরর হয়, তবে Exitsub লেবেলে যান।
If Target.Address = "$D$4" Then
If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub
ডেস্টিনেশন সেট করা D4 সেল হিসেবে যেটি ডেটা ভ্যালিডেশন ধারণ করে। যদি কোনো সেল ডেটা ভ্যালিডেশন ধারণ না করে, তবে Exitsub লেবেলে যান।
Else: If Target.Value = "" Then GoTo Exitsub Else
যদি ডেস্টিনেশন হিসেবে কোনো সেল না থাকে, তবে Exitsub লেবেলে যান। অন্যথায়, পরের লাইনগুলো এক্সিকিউট করুন।
Application.EnableEvents = False
অ্যাপ্লিকেশন ইভেন্টস বন্ধ করা যাতে Worksheet_Change ম্যাক্রো ফায়ার করা থেকে रोका যায়; অন্যথায় এটা ইনফাইনিট লুপ সৃষ্টি করতে পারে।
ValueB = Target.Value
ValueB-কে চেঞ্জড সেলের নতুন ভ্যালু হিসেবে ডিফাইন করা।
Application.Undo
চেঞ্জড সেলকে আনডু করার জন্য।
ValueA = Target.Value
চেঞ্জ আনডু করে, আমরা এখন ValueA-কে চেঞ্জড সেলের পুরনো ভ্যালু হিসেবে ডিফাইন করতে পারি।
If ValueA = "" Then Target.Value = ValueB
যদি পুরনো ভ্যালু ব্ল্যাঙ্ক হয়, তবে নতুন ভ্যালুটিকে ডেস্টিনেশন হিসেবে স্টোর করুন।
Else Target.Value = ValueA & ", " & ValueB End If End If End If
অন্যথায়, পুরনো এবং নতুন দুটি ভ্যালুই ডেস্টিনেশন ভ্যালু হিসেবে সেট করুন কমা (,) দিয়ে ক্যাটেনেট করে। সব If স্টেটমেন্ট বন্ধ করুন।
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
আইpplication ইভেন্টস আবার অন করতে হবে।
আরও পড়ুন: এক্সেলে একাধিক সিলেকশনসহ ড্রপ ডাউন লিস্ট তৈরি কীভাবে করবেন
সদৃশ পড়াশোনা:
- এক্সেলে অন্য শীট থেকে ড্রপ ডাউন লিস্ট তৈরি (২ পদ্ধতি)
- সার্চেবল ড্রপ ডাউন লিস্ট এক্সেলে তৈরি (২ পদ্ধতি)
- এক্সেল ড্রপ ডাউন লিস্ট কাজ করছে না (৮ সমস্যা ও সমাধান)
- টেবিল থেকে এক্সেল ড্রপ ডাউন লিস্ট তৈরি (৫ উদাহরণ)
- এক্সেলে অটো আপডেট ড্রপ ডাউন লিস্ট (৩ উপায়)
২. রিপিটিভ ভ্যালু ছাড়া ড্রপ ডাউন লিস্ট থেকে মাল্টিপল ভ্যালু সিলেক্ট করতে VBA ম্যাক্রো প্রয়োগ করুন
আমাদের ডেটাসেটে রিপিটিভ ভ্যালু রয়েছে। যদি আপনি চান আপনার ড্রপডাউন লিস্ট রিপিটিভ ভ্যালু ছাড়া সব ভ্যালু ধরতে পারে, তবে নিচের ধাপগুলো অনুসরণ করুন।
ধাপসমূহ:
- আগে দেখানো মতো, Developer ট্যাব থেকে Visual Basic Editor খুলুন।
- তারপর, রাইট-ক্লিক করলে আসা View Code অপশন থেকে কোড উইন্ডো-তে যান রুচির ওয়ার্কশীট-এর।
- তারপর, নিচের কোডটি কপি করে নির্দিষ্ট ওয়ার্কশীটের কোড উইন্ডোতে পেস্ট করুন।
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ValueA As String
Dim ValueB As String
Application.EnableEvents = True
On Error GoTo Exitsub
If Target.Address = "$D$4" Then
If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub
Else: If Target.Value = "" Then GoTo Exitsub
Else
Application.EnableEvents = False
ValueB = Target.Value
Application.Undo
ValueA = Target.Value
If ValueA = "" Then
Target.Value = ValueB
Else
If InStr(1, ValueA, ValueB) = 0 Then
Target.Value = ValueA & ", " & ValueB
Else:
Target.Value = ValueA
End If
End If
End If
End If
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
End Sub

- এই কোডটি রান করবেন না, সেভ করুন।
- এখন রুচির ওয়ার্কশীটে ফিরে যান। যদি Cell D4-এ তৈরি ড্রপডাউন লিস্টে ক্লিক করুন, তবে আপনি দেখবেন আপনি এখন ড্রপডাউন থেকে মাল্টিপল ভ্যালু সিলেক্ট করতে পারছেন (নিচের GIF-টি দেখুন)।

উপরের GIF-এ দেখা যাচ্ছে, এই VBA কোড দিয়ে আপনি এক নির্দিষ্ট ভ্যালু একাধিক বার সিলেক্ট করতে পারবেন না। এই সেকশনে দেওয়া ম্যাক্রো কোড ড্রপডাউন লিস্টকে কোনো রিপিটিভ ভ্যালু ছাড়া ভ্যালু সিলেক্ট করতে দেবে।
VBA কোড ব্যাখ্যা
Dim ValueA As String
Dim ValueB As String
ভেরিয়েবল নাম ডিফাইন করা।
Application.EnableEvents = True
অ্যাপ্লিকেশন ইভেন্টস আবার অন করা।
On Error GoTo Exitsub
যদি এরর হয়, তবে Exitsub লেবেলে যান।
If Target.Address = "$D$4" Then
If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub
ডেস্টিনেশন সেট করা D4 সেল হিসেবে যেটি ডেটা ভ্যালিডেশন ধারণ করে। যদি কোনো সেল ডেটা ভ্যালিডেশন ধারণ না করে, তবে Exitsub লেবেলে যান।
Else: If Target.Value = "" Then GoTo Exitsub Else
যদি ডেস্টিনেশন হিসেবে কোনো সেল না থাকে, তবে Exitsub লেবেলে যান। অন্যথায়, পরের লাইনগুলো এক্সিকিউট করুন।
Application.EnableEvents = False
অ্যাপ্লিকেশন ইভেন্টস বন্ধ করা যাতে Worksheet_Change ম্যাক্রো ফায়ার করা থেকে रोका যায় যা ইনফাইনিট লুপ সৃষ্টি করতে পারে।
ValueB = Target.Value
ValueB-কে চেঞ্জড সেলের নতুন ভ্যালু হিসেবে ডিফাইন করা।
Application.Undo
চেঞ্জড সেলকে আনডু করার জন্য।
ValueA = Target.Value
চেঞ্জ আনডু করে, আমরা এখন ValueA-কে চেঞ্জড সেলের পুরনো ভ্যালু হিসেবে ডিফাইন করতে পারি।
If ValueA = "" Then Target.Value = ValueB
যদি পুরনো ভ্যালু ব্ল্যাঙ্ক হয়, তবে নতুন ভ্যালুটিকে ডেস্টিনেশন হিসেবে স্টোর করুন।
Else If InStr(1, ValueA, ValueB) = 0 Then Target.Value = ValueA & ", " & ValueB
InStr ফাংশন একটি সাবস্ট্রিং-এর প্রথম অকিউরেন্সের পজিশন রিটার্ন করে একটি স্ট্রিং-এ। আউটপুট যদি 0 হয় তবে পুরনো এবং নতুন দুটি ভ্যালুই ডেস্টিনেশন ভ্যালু হিসেবে সেট করুন কমা (,) দিয়ে ক্যাটেনেট করে।
Else: Target.Value = ValueA End If End If End If End If
অন্যথায়, পুরনো ভ্যালুটিকে ডেস্টিনেশন হিসেবে সেট করুন। সব If স্টেটমেন্ট বন্ধ করুন।
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
অ্যাপ্লিকেশন ইভেন্টস আবার অন করা।
আরও পড়ুন: সিলেকশনের ওপর নির্ভরশীল এক্সেল ড্রপ ডাউন লিস্ট
উপসংহার
উপসংহারে, এই আর্টিকেলটি আপনাকে ২টি ইফেক্টিভ মেথড দেখিয়েছে কীভাবে VBA ম্যাক্রো দিয়ে এক্সেলে ড্রপ ডাউন লিস্ট থেকে ভ্যালু সিলেক্ট করতে হয়। আশা করি এই আর্টিকেলটি আপনার জন্য খুব উপকারী হয়েছে। টপিকটি নিয়ে যেকোনো প্রশ্ন থাকলে বিনামূল্যে জিজ্ঞাসা করুন।
সম্পর্কিত আর্টিকেলসমূহ
- ফর্মুলা বেসড ড্রপ-ডাউন লিস্ট এক্সেলে তৈরির ৪ উপায়
- কন্ডিশনাল ড্রপ ডাউন লিস্ট এক্সেলে (তৈরি, সর্ট ও ব্যবহার)
- IF স্টেটমেন্ট ব্যবহার করে এক্সেলে ড্রপ-ডাউন লিস্ট তৈরির উপায়
- সেল ভ্যালুর সাথে ড্রপ ডাউন লিস্ট লিংক করার ৫ উপায় এক্সেলে
- এক্সেলে ড্রপ-ডাউন লিস্ট রিমুভ করার উপায়
