جستجو در اکسل با کد نویسی VBA — راهنمای کاربردی

۴۷۳۳ بازدید
آخرین به‌روزرسانی: ۰۳ خرداد ۱۴۰۲
زمان مطالعه: ۱۲ دقیقه
جستجو در اکسل با کد نویسی VBA — راهنمای کاربردی

موتورهای جستجو (Search Engine) در اینترنت (مانند گوگل و یاهو) با نشان دادن یک کادر جستجو (Search Box) به کاربر اجازه می‌دهند، موضوع مورد علاقه‌اش را ثبت کرده و در محیط اینترنت جستجو کند. معمولا نتیجه این کاوش، طی یک لیست از سایت‌های مورد نظر، ظاهر می‌شود. مشخص است به علت وجود انبوه اطلاعات و سایت‌ها، بررسی همه آن‌ها به صورت تک تک توسط کاربر امکان‌پذیر نیست و این مسئله، فلسفه وجودی موتورهای جستجو را نشان می‌دهد. حال فرض کنید در یک صفحه گسترده مثل اکسل، داده‌های زیادی براساس اقلام مختلف وجود دارد. برای مثال یک انبار را در نظر بگیرید که تمامی اقلام ذخیره شده در آن، در یک جدول اکسل (Spread Sheet) ثبت شده‌اند. قرار است به کمک یک کادر جستجو، عملیات پیدا کردن یک قلم خاص یا یک گروه محصول را انجام دهیم. طولانی بودن این لیست، باعث می‌شود که نتوانیم از روش‌های معمول جستجو چشمی برای کاوش در جدول استفاده کنیم. بنابراین برای حل چنین مشکلی در این متن به موضوع جستجو در اکسل با کد نویسی VBA پرداخته‌ایم تا به کمک آن بتوانید در انبوه اطلاعاتی که در کاربرگ اکسل ذخیره کرد‌ه‌اید، به راحتی جستجو کنید.

برای آشنایی بیشتر با نحوه کد نویسی به زبان VBA، نوشتارهای برنامه نویسی VBA در اکسل و ماکروهای VBA در اکسل — یک راهنمای مقدماتی و بیان اهمیت آن‌ها را مطالعه کنید. همچنین خواندن نوشتار ۴ اشتباه رایج در هنگام نوشتن ماکروها در اکسل و توابع INDEX و MATCH در اکسل برای جست‌وجوی سریعتر نیز خالی از لطف نیست.

جستجو در اکسل با کد نویسی VBA

اگر از یک ساختار پایگاه داده (DataBase) برای ثبت اطلاعات در اکسل استفاده کنید، جستجوی مقدار دلخواه در یک ستون، به کمک فیلتر (Filter) میسر می‌شود. ولی مشکل این است که اگر بخواهیم جستجو را از یک ستون به ستون دیگر ببریم، باید فیلتر را برای آن ستون فعال کرده و با استفاده از شرایط یا مشخص کردن مقدار مورد نظر در فیلتر، سطرهایی که با شرط گفته شده مطابقت دارند را ظاهر سازیم.

البته شاید استفاده از ابزار جستجو (Find) که در اکثر برنامه‌های کاربردی ویندوز گنجانده شده نیز راه‌کار دیگری باشد. ولی متاسفانه استفاده از Find برای پایگاه‌های داده مناسب نیست و ممکن است ناحیه جستجو به کل کاربرگ گسترش یافته و حتی نتیجه را در ستون‌های دیگر کاربرگ نمایش دهد. مشخص است که جستجو در پایگاه داده باید در یک ستون (Field) مشخص صورت گرفته و رکوردهای (Record) متناسب با آن، ظاهر شوند.

در این متن می‌خواهیم به کمک زبان VBA و استفاده از اجزا یا کنترل‌های فرم (From Controls)، یک فرم جستجو در اکسل با کد نویسی ایجاد کنیم. به تصویر ۱ دقت کنید. قرار است از این فرم برای جستجو اطلاعات برحسب ستون‌های Car, Price, Color و Year استفاده شود.

https://blog.faradars.org/%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%D9%88-%D8%A7%D8%B5%D8%B7%D9%84%D8%A7%D8%AD%D8%A7%D8%AA-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C-%D8%A2%D9%86/
تصویر ۱: کادر جستجو در اکسل با کد نویسی

فرض بر این است که کاربرگی داریم که شامل ستون‌هایی با اسامی گفته شده است و چندین سطر از کاربرگ، مربوط به مقادیر این ستون‌ها است. از آنجایی که جستجو در بین آن‌ها کار سختی است، در کد نویسی، فیلتر را برای ستون‌های مورد نظر فعال کرده و مقداری که در کادر جستجو (SearchBox) وارد کرده‌ایم را توسط فیلتر به کار می‌گیریم. واضح است که به این ترتیب، فقط سطرهایی از کاربرگ ظاهر خواهند شد که با شرط گفته شده مطابقت داشته باشند. ابتدا طراحی فرم جستجو را با ابزارهای توسعه Developer اکسل توضیح داده، سپس شیوه جستجو براساس ستون‌های متنی و عددی را بوسیله کدها VBA مشخص می‌کنیم.

طراحی فرم جستجو

رابط کاربری (User Interface) که گاهی UI‌ نیز نامیده می‌شود، برای فرم جستجو می‌تواند به شکل دلخواه طراحی شود ولی شاید بهتر باشد که تصویر ۱ را الگو قرار داده و مطابق با آن فرم جستجو را طراحی کنیم. به این منظور باید از یک کادر متنی (Text Box)، یک دکمه (Bottom) و گزینه‌های انتخابی (Options Bottom) استفاده کنیم. در ادامه نحوه ظاهر کردن هر یک از این گزینه‌ها را در کاربرگ اکسل بازگو خواهیم کرد.

بخشی از اکسل که برای طراحی فرم‌های ورود، گزارش و چاپ کاربرگ‌ها وجود دارد از چشم کاربران تازه‌کار مخفی شده است. برگه Developer معمولا به طور پیش‌فرض، هنگام کار با اکسل دیده نمی‌شود، مگر آنکه آن را احضار کنید.

برای ظاهر کردن برگه Developer از فهرست File گزینه Options را انتخاب کرده و از پنجره ظاهر شده، بخش Customize Ribbon را فعال کرده و از بین اسامی برگه‌های موجود، برگه Developer را فعال کنید. با فشردن دکمه OK، این برگه در لیست برگه‌های اکسل ظاهر خواهد شد.

show developer ribbon
تصویر 2: ظاهر سازی برگه Developer در اکسل

به این ترتیب بوسیله گام‌های زیر، رابط کاربر برای جستجو را توسط گزینه‌های این برگه را خواهیم ساخت.

  1. برگه یا نوار Developer را از قسمت برگه‌های اکسل فعال کنید.
  2. روی دکمه کشویی Inset کلیک کرده و گروه کنترل‌های فرم (Form Control) را پیدا کنید.
  3. گزینه Option Button را از این قسمت انتخاب کنید (ردیف اول، آخرین نماد).
  4. با استفاده از ماوس که به صورت + درآمده است، یک کادر ترسیم کنید تا دکمه Option ترسیم شود.
  5. ترسیم Option Button‌ها را تا جایی که همه دکمه‌ها مطابق با تصویر ۱ ایجاد شوند، تکرار کنید.

برای ایجاد یک مکان برای درج متن مورد جستجو، از یک Textbox استفاده کنید. این کار را هم به وسیله گامی‌های زیر اجرا نمایید.

  1. از برگه Insert قسمت Text گزینه Textbox را انتخاب و یک کادر توسط آن ترسیم کنید.
  2. از آنجایی که کاربرگ دارای مقادیر لاتین است، تراز متن داخلی را چپ (Left Align) کرده و زمینه آن را سفید انتخاب کنید.
  3. کادر اطراف Textbox را به کمک قالب‌بندی، به رنگ خاکستری درآورد.

از طرفی احتیاج به یک دکمه Search نیز داریم. این دکمه را هم به وسیله ابزارهای ترسیمی اکسل ایجاد کرده و بعد کدهای VBA را به آن نسبت می‌دهیم. به این ترتیب مراحل زیر را طی خواهیم کرد.

  1. از برگه Insert و بخش Illustrations، گزینه Shapes را فعال کنید.
  2. یک مستطیل با حاشیه‌های گرد (Rectangle: Rounded Corners) ترسیم کنید.
  3. با کلیک راست روی آن، فهرست دستورات را ظاهر کرده و گزینه Edit Text را انتخاب کنید.
  4. تراز متن را وسط قرار داده و عبارت Search را به صورت توپُر (Bold) داخل آن تنظیم کنید.
  5. زمینه را به رنگ خاکستری (استاندارد برای دکمه‌های ویندوز) درآورید.

البته می‌توانید برای زیبایی بیشتر، از رنگ‌ها، سایه و قالب‌های متقاوت برای اشکال ترسیمی (Drawing Objects) نیز استفاده کنید.

به این ترتیب سطرهای ابتدایی کاربرگ را به شکلی که در تصویر ۱ دیده شد، درآوردیم. فرض کنید که سطرهای اطلاعاتی در کاربرگ نیز بعد از این رابط کاربر یعنی سطرهای چهارم به بعد، قرار گرفته‌اند.

نکته: به جای استفاده از یک کادر متنی (Textbox) می‌توانید از یک سلول یا ActiveX Textbox استفاده کرده و کدها را به آن‌ها نسبت دهید. همچنین به جای کلیک روی دکمه Search نیز می‌توانید از یک کلید میانبر (Shortcut Key) بهره ببرید تا به محض استفاده از آن‌ها، عمل جستجو صورت گیرد. این موارد را در ادامه بررسی خواهیم کرد.

form controls and option button
تصویر ۳: دسترسی به کنترل فرم (Control Form Objects)

کلید اصلی برای اجرای جستجو در اکسل با کد نویسی VBA، استفاده از خصوصیات اجزای فرم است. به منظور دسترسی به اجزای فرم، بهتر است ابتدا آن‌ها را نام‌گذاری کنیم.

برای نام‌گذاری کادر نام که برای متن مورد جستجو انتخاب کردید، ابتدا آن را انتخاب کرده و در کادر نام (Name Box) که در کنار نوار فرمول (Formula Bar) قرار دارد، اسمی برایش وارد کنید. از آنجایی که این کادر اولین Textbox رسم شده در کاربرگ است، نام آن به طور پیش‌فرض TextBox1 انتخاب شده است ولی ما این نام را تغییر خواهیم داد.

بهتر است که بین بخش‌های نام، هیچ فاصله‌ای به کار نبرید. برای مثال در تصویر 4، ما کادر مربوط به عبارت جستجو را UserSearch نام‌گذاری کرده‌ایم.

user search box
تصویر ۴: نامگذاری کادر جستجو در اکسل با کد نویسی

نکته: توجه داشته باشید که اسامی ایجاد شده برای هر یک از اشیاء فرم UI، در ادامه در کدهای VBA به کار خواهند رفت. بنابراین اسمی را به یاد داشته و به شکلی که در کدهای نوشته شده، نام‌گذاری را انجام دهید. در غیر اینصورت عملیات جستجو در اکسل با کد نویسی صورت نخواهند گرفت.

جستجو در اکسل با کد نویسی برای متن

کدهایی که در ادامه ظاهر شده‌اند به منظور فیلتر کردن ستون دلخواه و استفاده از مقدار مورد جستجو در کادر UserSearch به کار می‌روند. در بعضی از قسمت‌ها، کدهایی که برای اشیاء ActiveX آماده شده‌ نیز دیده می‌شود که البته از حالت اجرا خارج شده‌اند. در انتهای این دستورات عبارت ActiveX Control دیده می‌شود.

همچنین در صورتی که از یک سلول برای مشخص کردن کادر جستجو بهره برده‌اید، از دستوراتی که در انتهای آن‌ها عبارت Cell Input دیده می‌شود، استفاده کرده و کدهای مربوط به دو وضعیت دیگر را غیرفعال کنید.

1Sub SearchBox()
2'PURPOSE: Filter Data on User-Determined Column & Text
3'SOURCE: www.TheSpreadsheetGuru.com
4
5Dim myButton As OptionButton
6Dim MyVal As Long
7Dim ButtonName As String
8Dim sht As Worksheet
9Dim myField As Long
10Dim DataRange As Range
11Dim mySearch As Variant
12  
13'Load Sheet into A Variable
14  Set sht = ActiveSheet
15
16'Unfilter Data (if necessary)
17  On Error Resume Next
18    sht.ShowAllData
19  On Error GoTo 0
20  
21'Filtered Data Range (include column heading cells)
22  Set DataRange = sht.Range("A4:E31") 'Cell Range
23  'Set DataRange = sht.ListObjects("Table1").Range 'Table
24
25'Retrieve User's Search Input
26  mySearch = sht.Shapes("UserSearch").TextFrame.Characters.Text 'Control Form
27  'mySearch = sht.OLEObjects("UserSearch").Object.Text 'ActiveX Control
28  'mySearch = sht.Range("A1").Value 'Cell Input
29
30'Loop Through Option Buttons
31  For Each myButton In ActiveSheet.OptionButtons
32      If myButton.Value = 1 Then
33        ButtonName = myButton.Text
34        Exit For
35      End If
36  Next myButton
37  
38'Determine Filter Field
39  On Error GoTo HeadingNotFound
40    myField = Application.WorksheetFunction.Match(ButtonName, DataRange.Rows(1), 0)
41  On Error GoTo 0
42  
43'Filter Data
44  DataRange.AutoFilter _
45    Field:=myField, _
46    Criteria1:="=*" & mySearch & "*", _
47    Operator:=xlAnd
48  
49'Clear Search Field
50  sht.Shapes("UserSearch").TextFrame.Characters.Text = "" 'Control Form
51  'sht.OLEObjects("UserSearch").Object.Text = "" 'ActiveX Control
52  'sht.Range("A1").Value = "" 'Cell Input
53
54Exit Sub
55
56'ERROR HANDLERS
57HeadingNotFound:
58  MsgBox "The column heading [" & ButtonName & "] was not found in cells " & DataRange.Rows(1).Address & ". " & _
59    vbNewLine & "Please check for possible typos.", vbCritical, "Header Name Not Found!"
60    
61End Sub

در بخش‌های ابتدایی کد VBA، دستوراتی را مشاهده می‌کنید که برای معرفی متغیرها و ساختار برنامه لازم است. فرض بر این است که ناحیه مورد جستجو، سلول‌های A4:E31 هستند. این قسمت از کاربرگ را می‌توانید به نام Table1 نام‌گذاری کرده و دستور زیر را در کد فعال نمایید.

1Set DataRange = sht.ListObjects("Table1").Range

به اسامی اشیاء فرم که در کد به کار رفته‌اند دقت کنید. برای مثال انتخاب‌های دایره‌ای با نام OptionButtons مشخص شده‌اند. همانطور که می‌بینید، اسامی اشیاء مربوط به فرم جستجو که در کد به کار رفته‌اند، مطابق جدول زیر است.

جدول ۱: اسامی متغیرها و نقش آن‌ها در برنامه

نام شینقشتوضیحات
MyButtonOptionButtonانتخاب ستون‌های جستجو
MyValمتغیر عددی
ButtonNameمتغیر متنی
shtاز نوع کاربرگبرای ارجاع به کاربرگ فعال
myFieldمتغیر عددیشماره ستون مورد جستجو
DataRangeناحیه مورد جستجو
mySearchعبارت متنی یا عددی

نکته اساسی در این کد، دستور زیر است.

1    Criteria1:="=*" & mySearch & "*", _

همانطور که می‌بینید از «فرانویسه» (Wildcard) یا علامت‌ جایگزین * استفاده شده است تا نتیجه جستجو شامل تمامی عبارت‌هایی باشند که متن ثبت شده در متغیر UserSearch در آن دیده می‌شود. برای مثال اگر Color را انتخاب کرده و متن whi را در کادر Search وارد کرده و جستجو را براساس آن انجام دهیم، تمامی سطرهایی که شامل عبارت Whi هستند، مانند white یا mean while ظاهر خواهند شد.

نکته: اگر می‌خواهید فیلتر و جستجو، دقیقا منطبق بر متنی مورد جستجو باشد، دو علامت جایگزین «*» را از ابتدا و انتهای بخش کد بالا خارج کنید.

در بخش انتهایی نیز مدیریت خطاها و پیغام‌هایی که درصورت رخ دادن خطا باید ظاهر شوند، قرار گرفته‌اند. نتیجه نسبت دادن این کد به دکمه Search به مانند تصویر 5 خواهد بود. البته نحوه نسبت دادن کد به هر یک از اشیاء فرم جستجو را در انتها مشخص خواهیم کرد.

تصویر ۵: فرم جستجو در اکسل با کد نویسی برای مقادیر متنی

جستجو در اکسل با کد نویسی برای متن و عدد

این بار می‌خواهیم کاری کنیم که جستجو شامل مقادیر عددی نیز باشد. به این منظور، دستورات و قسمت‌هایی به کد قبلی اضافه شده تا مدیریت مقادیر عددی نیز به همراه متن، صورت گیرد. همانطور که در تصویر ۶ مشاهده می‌کنید، ستون‌های عددی مانند ستون‌های Price و Year نیز روی فرم جستجو توسط OptionButton اضافه شده‌‌اند.

image-asset text and numbers
تصویر 6: فرم جستجو در اکسل با کد نویسی برای ستون‌های متنی و عددی

کدی که در زیر مشاهده می‌کنید، بین محتویات عددی و متنی تفاوت قائل شده است. البته ناحیه‌ای که برای جستجو انتخاب شده، مانند قسمت قبل است. ولی از آنجایی که مقادیر عددی، به طور دقیق باید جستجو شوند، کد مربوط به جستجوی آن‌ها با عملگر شرطی If جدا شده است.

1Sub SearchBox()
2'PURPOSE: Filter Data on User-Determined Column & Text/Numerical value
3'SOURCE: www.TheSpreadsheetGuru.com
4
5Dim myButton As OptionButton
6Dim SearchString As String
7Dim ButtonName As String
8Dim sht As Worksheet
9Dim myField As Long
10Dim DataRange As Range
11Dim mySearch As Variant
12
13'Load Sheet into A Variable
14  Set sht = ActiveSheet
15
16'Unfilter Data (if necessary)
17  On Error Resume Next
18    sht.ShowAllData
19  On Error GoTo 0
20  
21'Filtered Data Range (include column heading cells)
22  Set DataRange = sht.Range("A4:E31") 'Cell Range
23  'Set DataRange = sht.ListObjects("Table1").Range 'Table
24
25'Retrieve User's Search Input
26  mySearch = sht.Shapes("UserSearch").TextFrame.Characters.Text 'Control Form
27  'mySearch = sht.OLEObjects("UserSearch").Object.Text 'ActiveX Control
28  'mySearch = sht.Range("A1").Value 'Cell Input
29  
30'Determine if user is searching for number or text
31  If IsNumeric(mySearch) = True Then
32    SearchString = "=" & mySearch
33  Else
34    SearchString = "=*" & mySearch & "*"
35  End If
36    
37'Loop Through Option Buttons
38  For Each myButton In sht.OptionButtons
39    If myButton.Value = 1 Then
40      ButtonName = myButton.Text
41      Exit For
42    End If
43  Next myButton
44  
45'Determine Filter Field
46  On Error GoTo HeadingNotFound
47    myField = Application.WorksheetFunction.Match(ButtonName, DataRange.Rows(1), 0)
48  On Error GoTo 0
49  
50'Filter Data
51  DataRange.AutoFilter _
52    Field:=myField, _
53    Criteria1:=SearchString, _
54    Operator:=xlAnd
55  
56'Clear Search Field
57  sht.Shapes("UserSearch").TextFrame.Characters.Text = "" 'Control Form
58  'sht.OLEObjects("UserSearch").Object.Text = "" 'ActiveX Control
59  'sht.Range("A1").Value = "" 'Cell Input
60  
61Exit Sub
62
63'ERROR HANDLERS
64HeadingNotFound:
65  MsgBox "The column heading [" & ButtonName & "] was not found in cells " & DataRange.Rows(1).Address & ". " & _
66    vbNewLine & "Please check for possible typos.", vbCritical, "Header Name Not Found!"
67  
68End Sub

به این قسمت از کد توجه کنید.

1If IsNumeric(mySearch) = True Then
2
3SearchString = "=" & mySearch
4
5Else
6
7SearchString = "=*" & mySearch & "*"
8
9End If

واضح است که در صورت عددی بودن عبارت مورد جستجو در فیلد مربوطه، یک مقایسه ریاضیاتی ( = ) صورت می‌گیرد. ولی در حالتی که عبارت متنی باشد، مقایسه شامل علامت‌ جایگزین * در ابتدا و انتهای متن مورد جستجو، خواهد بود. پس از انجام جستجو، مقدار مورد جستجو از کادر SearchBox پاک شده و برای ورودی‌های بعدی آماده می‌شود. این بخش از کد را برای تاکید، دوباره در زیر نمایش داده‌ایم.

1'Clear Search Field
2  sht.Shapes("UserSearch").TextFrame.Characters.Text = "" 'Control Form
3  'sht.OLEObjects("UserSearch").Object.Text = "" 'ActiveX Control
4  'sht.Range("A1").Value = "" 'Cell Input

سطر اول، به منظور یادداشت و معرفی این بخش نوشته شده است. ولی سطر دوم مربوط به کنترل فرم یا شکل ترسیمی (UserSearch) است که از نوع TextFrame یا همان کادر متنی است که در ابتدای متن نحوه ایجاد آن را در فرم جستجو مورد بررسی قرار دادیم. سطر سوم که به صورت غیرفعال درآمده، زمانی به کار می‌رود که به جای سطر دوم و براساس شئی ActiveX کد را اجرا نماییم. سطر چهارم نیز براساس محتویات سلول A1، عملیات را انجام می‌دهد. البته این بخش هم به صورت غیراجرایی در آمده است تا بعدا در صورت لزوم قابل استفاده باشند.

نکته: در صورتی که از Control Form استفاده می‌کنید، تمامی بخش‌ هایی که در انتهای فرمان با عبارت Control Form مشخص شده‌اند را به صورت اجرایی درآورید. اگر از کنترل‌های ActiveX در طراحی فرم استفاده کرده‌اید، بخشی از دستورات که در انتهای آن‌ها عبارت ActiveX Control دیده می‌شود را فعال نمایید. اگر از سلول برای مشخص کردن عبارت جستجو بهره برده‌اید، قسمت‌های مربوط به Cell Input را در کد به صورت اجرایی مشخص کنید. برای غیراجرایی کردن هر دستور (Comment)، در ابتدای خط فرمان، یک علامت ' گذاشته و برای فعال سازی، این علامت را بردارید.

همانطور که در کد زیر مشاهده می‌کنید، عملی که توسط این دکمه اجرا می‌شود، قرار دادن عبارت خالی (NULL) یا "" در کادر جستجو (SearchBox) است. توجه داشته باشید، اگر می‌خواهید فیلتر برداشته شده و همه رکوردها، قابل مشاهده باشند، از دکمه Clear استفاده کنید. کدهای مربوط به این دکمه در بخش بعدی معرفی می‌شوند.

برداشتن فیلتر از جدول

دکمه Clear که در فرم قرار گرفته، به منظور پاک کردن عبارت جستجو و نمایش همه رکوردهای جدول ایجاد شده است. بنابراین پس از انجام جستجو، اگر می‌خواهید همه اطلاعات را مشاهده و فیلتر را غیر فعال نمایید، روی این دکمه کلیک کنید. کد مربوط به این دکمه در ادامه قابل مشاهده است. مشخص است که عبارت ShowAllData نکته کلیدی برای این قسمت از برنامه است.

1Sub ClearFilter()
2'PURPOSE: Clear all filter rules
3
4'Clear filters on ActiveSheet
5  On Error Resume Next
6    ActiveSheet.ShowAllData
7  On Error GoTo 0
8  
9End Sub

انتصاب ماکروها به اجزای فرم جستجو در اکسل با کد نویسی

نسبت دادن دستورات نوشته شده به هر یک از اشیاء در فرم، یک مرحله مهم برای ایجاد فرم جستجو در اکسل با کد نویسی محسوب می‌شود. در تصویر زیر، مراحل مربوط به انجام این کار را مشاهده می‌کنید.

Add VBA Macro Code To Filtering Search Button
تصویر 7: انتصاب ماکرو به یک دکمه برای اجرا

همانطور که در تصویر ۷ قابل مشاهده است، مراحل نسبت دادن هر قطعه کد به دکمه‌ها در فرم جستجو در اکسل با کد نویسی VBA به صورت زیر هستند.

  • گام اول: قسمت مربوطه در فرم را انتخاب کرده و فهرست کلیک راست را ظاهر می‌کنیم.
  • گام دوم: دستور Assign Macro را از فهرست مورد نظر انتخاب نمایید.
  • گام سوم: در داخل کادر Macros in، گزینه This Workbook را انتخاب کرده تا لیست برنامه‌های موجود در این کارپوشه در کادر بالایی ظاهر شود.
  • گام چهارم: از کادر Macro name نام ماکرو یا برنامه VBA که ذخیره کرده‌اید را انتخاب کنید.
  • گام پنجم: با فشردن دکمه OK‌، عمل انتصاب کد به دکمه انتخابی، صورت خواهد گرفت.

به منظور دسترسی به کدها مربوط به جستجو در اکسل با کد نویسی VBA و همچنین پرونده اکسلی که برای جستجو در مثال‌ها به کار رفته، اینجا کلیک کنید. البته پرونده دریافتی با قالب فشرده است. کافی است پس از خارج کردن آن از حالت فشرده، فایل Creating A Search Box.xlsm را در اکسل بارگذاری کرده و به کاربرگ‌های Search Text و Search Text & Numbers دست یابید.

نکته: پرونده‌های اکسل که به همراه کد VBA یا ماکرو هستند با پسوند xlsm ذخیره و بازیابی می‌شوند.

خلاصه و جمع‌بندی

متاسفانه بسیاری از امکاناتی که انتظار داریم توسط شرکت مایکروسافت در اکسل قرار گرفته باشد، در این نرم‌افزار پیاده سازی نشده است. ولی خوشبختانه به کمک VBA، امکان توسعه ویژگی‌ها و کاربردهای اکسل وجود دارد و کاربرانی که به VBA تسلط دارند، تقریبا هر کاری با اکسل انجام می‌دهند. ایجاد برنامه‌های کاربردی، فرم‌های ورود و گزارشات اختصاصی از جمله کارهایی است که در محیط VBA می‌توان انجام داد. همانطور که در متن خواندید، ایجاد کادر یا جعبه جستجو یکی از امکاناتی است که در اکسل وجود نداشته ولی با استفاده از این نوشتار و ایجاد کادر جستجو در اکسل با کد نویسی VBA، براساس هر ستون دلخواه می‌توانید جستجو انجام داده و سطر اطلاعاتی خاص خود را فیلتر کرده و نمایش دهید.

بر اساس رای ۵ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
TheSpreadsheetGuruمجله فرادرس
۱ دیدگاه برای «جستجو در اکسل با کد نویسی VBA — راهنمای کاربردی»

اگر داده هایمان توی شیت دیگری بود میتونیم عملیات جستجو و فیلتر را انجام دهیم یا این دستورات توی شیت جاری که داده ها در اون قرار دارند عمل میکنه به عبارت دیگه میخوام از کل داده هایی که توی شیت اول قرار دارند توی شیت دوم با عملیات جستجویی که گفیتن موارد دلخواه رو انتخاب کنم

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *