কম্পিউটার টিউটোরিয়াল

এক্সেলে অটোফিল্টার স্ট্যাটাস যাচাই করার দ্রুত VBA পদ্ধতিসমূহ

এক্সেলের অটোফিল্টার ফিচার নির্দিষ্ট শর্ত অনুযায়ী ডেটা বের করার জন্য খুবই কার্যকর। কিন্তু কখনো কখনো টেকনিক্যাল সমস্যায়, অটোফিল্টার লুকিয়ে যায় অথবা ফিল্টার না থাকেও এক্সেল দেখায় যে ফিল্টার আছে। সেক্ষেত্রে, এক্সেল ওয়ার্কশিটে অটোফিল্টার সক্রিয় কিনা তা বুঝা প্রায় অসম্ভব হয়। VBA প্রয়োগ এক্সেলে যেকোনো অপারেশন চালানোর সবচেয়ে কার্যকর, দ্রুত এবং নিরাপদ পদ্ধতি। এই আর্টিকেলে, আমরা আপনাকে VBA ম্যাক্রো ব্যবহার করে এক্সেলে অটোফিল্টার অন কিনা তা যাচাই করার ৪টি সহজ ও দ্রুত পদ্ধতি দেখাব।

কার্যপত্র ডাউনলোড করুন

আপনি এখান থেকে ফ্রি প্র্যাকটিস এক্সেল ওয়ার্কবুক ডাউনলোড করতে পারেন।

VBA দিয়ে এক্সেলে অটোফিল্টার অন কিনা যাচাই করার ৪টি দ্রুত পদ্ধতি

এই অংশ অনুসরণ করলে, আপনি শিখবেন এক্সেলে VBA দিয়ে অটোফিল্টার অন কিনা যাচাই করার ৪টি ভিন্ন পদ্ধতি।

১. এক্সেল ওয়ার্কশিটে অটোফিল্টার অন বা অফ কিনা যাচাই করার জন্য VBA এম্বেড করুন

এই সেকশনে, আপনি শিখবেন VBA দিয়ে এক্সেল ওয়ার্কশিটে অটোফিল্টার অন কিনা যাচাই করা। এক্সিকিউশনের ধাপগুলো নিচে দেওয়া হলো।

ধাপসমূহ:

  • শুরুতে, আপনার কীবোর্ডে Alt + F11 চাপুন অথবা ডেভেলপার -> ভিজ্যুয়াল বেসিক ট্যাবে যান ভিজ্যুয়াল বেসিক এডিটর খোলার জন্য।
  • এরপর, পপ-আপ কোড উইন্ডোতে, মেনু বার থেকে, ইনসার্ট -> মডিউল ক্লিক করুন।
  • তারপর, নিচের কোডটি কপি করে কোড উইন্ডোতে পেস্ট করুন।
Sub AutoFilterCheck() If ActiveSheet.AutoFilterMode = True Then MsgBox "Auto Filter is turned on" Else MsgBox "Auto Filter is turned off" End If End Sub

আপনার কোড এখন রান করার জন্য প্রস্তুত।

  • এখন, আপনার কীবোর্ডে F5 চাপুন অথবা মেনু বার থেকে Run -> Run Sub/UserForm নির্বাচন করুন। আপনি সাব-মেনু বারের ছোট Run আইকন-এ ক্লিক করেও ম্যাক্রো রান করতে পারেন।

সফল কোড এক্সিকিউশনের পর, ফলাফল চেক করতে নিচের ছবিটি দেখুন।

উপরের ছবিটি দেখুন। ডেটাসেটে ফিল্টার আروز নেই বলেও, এক্সেল MsgBox আমাদের বলছে যে এই শিটে অটোফিল্টার অন আছে।

VBA প্রয়োগ এই ধরনের পরিস্থিতিতে খুবই সুবিধাজনক যেখানে কোনো অপারেশন নিয়ে অনিশ্চয়তা থাকে; VBA ম্যাক্রো আপনাকে সঠিক ফলাফল বের করতে সাহায্য করে এমনকি যখন আপনার চোখ সেটি দেখতে পারে না।

VBA কোড ব্যাখ্যা

If ActiveSheet.AutoFilterMode = True Then MsgBox "Auto Filter is turned on" Else MsgBox "Auto Filter is turned off" End If

এই কোডটুকু বোঝায় যদি এক্টিভ শিটের জন্য অটো ফিল্টার মোড ট্রু হয়, তবে এক্সেল MsgBox-এ "Auto Filter is turned on" মেসেজ ফেরত দেয়; অন্যথায়, "Auto Filter is turned off" মেসেজ ফেলে।

২. VBA কোড ডিবাগ করুন এবং এক্টিভ শিটে মোট অটোফিল্টারের কাউন্ট পান

এই সেকশনটি আপনাকে দেখাবে কিভাবে আপনি কোড ডিবাগ করে একটি এক্সেল শিটে কতগুলো অটোফিল্টার আছে তা কাউন্ট করতে পারেন। কোড এক্সিকিউট করার পর, ফলাফল এক্সেল VBA-র ইমিডিয়েট উইন্ডো-এ দেখাবে।

এটি পাওয়ার ধাপগুলো নিচে দেওয়া হলো।

ধাপসমূহ:

  • পূর্বের মতো, ডেভেলপার ট্যাব থেকে ভিজ্যুয়াল বেসিক এডিটর খুলুন এবং কোড উইন্ডোতে একটি মডিউল ইনসার্ট করুন।
  • তারপর, নিচের কোডটি কপি করে কোড উইন্ডোতে পেস্ট করুন।
Sub CountAutoFilters() Dim iCount As Long If ActiveSheet.AutoFilterMode = True Then iCount = 1 Debug.Print "AutoFilterMode Count: " & iCount End Sub

আপনার কোড এখন রান করার জন্য প্রস্তুত।

  • এরপর, Run করুন ম্যাক্রোটি উপরের সেকশনে দেখানো মতো। ফলাফল নিচের ছবিতে দেখানো হয়েছে।

উপরের ছবিতে দেখতে পাচ্ছেন, ইমিডিয়েট উইন্ডো-এ আপনি আপনার ওয়ার্কশিটে সক্রিয় অটোফিল্টারের মোট কাউন্ট পাবেন।

VBA কোড ব্যাখ্যা

Dim iCount As Long

ভেরিয়েবল ডিক্লেয়ার করা হয়েছে।

If ActiveSheet.AutoFilterMode = True Then iCount = 1 Debug.Print "AutoFilterMode Count: " & iCount

কোডের এই দুটি লাইন বোঝায়, যদি এক্টিভ শিটের জন্য অটো ফিল্টার মোড ট্রু হয়, তবে কাউন্ট শুরু করুন এবং মোট কাউন্ট প্রিন্ট করুন।

৩. এক্সেলে নির্দিষ্ট কলাম ফিল্টার করা হয়েছে কিনা যাচাই করার জন্য VBA প্রয়োগ করুন

মান लीজিয়ে আপনি চান আপনার এক্সেল স্প্রেডশিটের এক নির্দিষ্ট কলাম VBA দিয়ে ফিল্টার করা হয়েছে কিনা তা যাচাই करना।

চলুন দেখি কীভাবে করতে হয়।

ধাপসমূহ:

  • পূর্বে দেখানো মতো, ডেভেলপার ট্যাব থেকে ভিজ্যুয়াল বেসিক এডিটর খুলুন এবং কোড উইন্ডোতে একটি মডিউল ইনসার্ট করুন।
  • তারপর, নিচের কোডটি কপি করে কোড উইন্ডোতে পেস্ট করুন।
Sub CheckColumnFilter() Dim iSheet As Worksheet Set iSheet = ActiveSheet If iSheet.AutoFilter.Filters(2).On Then MsgBox "Column B is filtered." Else MsgBox "Column B is not filtered." End If End Sub

আপনার কোড এখন রান করার জন্য প্রস্তুত।

  • পরে, Run করুন ম্যাক্রোটি এবং আউটপুট দেখতে নিচের ছবিটি দেখুন।

উপরের ছবিটি বিবেচনা করুন। যদিও আপনি দেখতে পাচ্ছেন কলাম B-এ ফিল্টার আروز আছে, ম্যাক্রোটি আমাদের বলছে যে সেটি নেই। তাই, সফল কোড এক্সিকিউশনের পর, আমরা বলতে পারি কলাম B অটোফিল্টার করা নয়।

VBA কোড ব্যাখ্যা

Dim iSheet As Worksheet

ওয়ার্কশিট-এর জন্য ভেরিয়েবল ডিক্লেয়ার করা হয়েছে।

Set iSheet = ActiveSheet

সক্রিয় শিটটি ডিক্লেয়ার করা ভেরিয়েবলে সংরক্ষণ করা হয়েছে।

If iSheet.AutoFilter.Filters(2).On Then MsgBox "Column B is filtered." Else MsgBox "Column B is not filtered." End If

এই কোডটুকু বোঝায় যদি এক্টিভ শিটের জন্য কলাম ২ বা কলাম B-র অটো ফিল্টার ট্রু হয়, তবে এক্সেল MsgBox-এ "Column B is filtered." মেসেজ ফেরত দেয়; অন্যথায়, "Column B is not filtered." মেসেজ ফেলে।

৪. এক্সেল ওয়ার্কবুকে সক্রিয় অটোফিল্টার যাচাই করার জন্য VBA ম্যাক্রো

এই সেকশনে, আপনি শিখবেন কিভাবে আপনি একটি নির্দিষ্ট এক্সেল ওয়ার্কবুকের একটি শিটের জন্য সক্রিয় বা নিষ্ক্রিয় অটোফিল্টার যাচাই করতে পারেন।

এکسিকিউশনের ধাপগুলো নিচে দেওয়া হলো।

ধাপসমূহ:

  • প্রথমে, ডেভেলপার ট্যাব থেকে ভিজ্যুয়াল বেসিক এডিটর খুলুন এবং কোড উইন্ডোতে একটি মডিউল ইনসার্ট করুন।
  • তারপর, নিচের কোডটি কপি করে কোড উইন্ডোতে পেস্ট করুন।
Sub CheckAutofilterSheet() Dim z As Double For z = 1 To ThisWorkbook.Sheets.Count If ThisWorkbook.Sheets(z).AutoFilterMode Then MsgBox ThisWorkbook.Sheets(z).Name & " has enabled Autofilter" End If Next End Sub

আপনার কোড এখন রান করার জন্য প্রস্তুত।

  • এরপর, Run করুন ম্যাক্রোটি। এখন, ফলাফল দেখতে নিচের ছবিটি দেখুন।

উপরের ছবিতে দেখতে পাচ্ছেন, আমাদের ওয়ার্কবুকে "Dataset" নামে একটি ওয়ার্কশিট আছে। এক্সেলের MsgBox আমাদের দেখাচ্ছে যে "Dataset" শিটে অটোফিল্টার অন আছে। আপনি একটি নির্দিষ্ট এক্সেল ওয়ার্কবুকের সকল স্প্রেডশিটের জন্য এই কোডটি প্রয়োগ করতে পারেন।

VBA কোড ব্যাখ্যা

Dim z As Double

ভেরিয়েবল ডিক্লেয়ার করা হয়েছে।

For z = 1 To ThisWorkbook.Sheets.Count

মौজূদা ওয়ার্কবুকের ১ নম্বর শিট থেকে মোট শিট কাউন্ট-এর পর্যόν্ত লুপিং শুরু হয়েছে।

If ThisWorkbook.Sheets(z).AutoFilterMode Then MsgBox ThisWorkbook.Sheets(z).Name & " has enabled Autofilter" End If Next

যদি প্রথম শিটে অটো ফিল্টার মোড অন থাকে, তবে MsgBox-এ মেসেজ ফেলুন। তারপর, কোড শর্তটি শেষ করে পরবর্তী শিটে চলে যায় ইটারেশন করার জন্য। এটি এভাবে চলতে থাকে যতক্ষণ না বর্তমান ওয়ার্কবুকের সকল শিট কাউন্ট-এ পৌঁছায়।

উপসংহার

চূড়ান্তভাবে, এই আর্টিকেলে আপনাকে VBA ম্যাক্রো দিয়ে এক্সেলে অটোফিল্টার অন কিনা যাচাই করার ৪টি সহজ ও দ্রুত পদ্ধতি দেখানো হয়েছে। আশা করি এই আর্টিকেলটি আপনার জন্য খুব উপকারী হবে। বিষয়টি নিয়ে যেকোনো প্রশ্ন থাকলে বাধা না মনে করুন।

সম্পর্কিত আর্টিকেলগুলো
  • [সমাধান]: অটোফিল্টার মেথড অফ রেঞ্জ ক্লাস ফেলড (৫টি সমাধান)
  • VBA অটোফিল্টার: স্মলেস্ট টু লার্জেস্ট সর্ট (৩টি পদ্ধতি)
  1. এক্সেল ফাইল কম্প্রেস করুন: জিপ ও শেয়ার করার ৩টি প্রমাণিত পদ্ধতি

  2. এক্সেলে সঠিক স্কেল মডেল আঁকার ২টি সহজ কৌশল

  3. এক্সেলে স্ট্রাকচার্ড হায়ারার্কি তৈরি: ৩টি সহজ কৌশল

  4. এক্সেলে দ্রুত প্রশ্নাবলী তৈরি করুন: ২টি সহজ পদ্ধতি