با سلام
برای ایجاد لیست کشویی با قابلیت جستجو ما به سه مرحله پردازش نیاز داریم:
1-تنظیمات combo box از ActiveX Controls
2-پردازش اطلاعات لیست
3-استفاده از یک کد کوتاه vba در قسمت کد نویسی
ابتدا از تب Developer از برگه insert یک combo box به شیت اضافه میکنیم.
با کلیک راست بر روی combo box و انتخاب گزینه properties موارد زیر را بر روی combo box انجام میدهیم :
قسمت AutoWordSelect را برابر با false قرار میدهیم.
LinkedCell را برابر آدرس مورد نظر که قراره لیست در آن نمایش داده شود قرار دهید . ( درفایل نمونه توضیحی سلول a3 میباشد)
در قسمت ListFillRange یک نام قرار بدید مثلا DropDownList ( توجه داشته باشید در قسمت name manager با همین نام باید محدوده ای پویا را نامگذاری کنیم.)
در قسمت MatchEntry گزینه 2 – fmMatchEntryNone را انتخاب کنید.
به شیت لیست اسامی بر میگردیم .
در اولین ستون کمکی (h) ابتدا با استفاده از فرمول
کد PHP:
=--ISNUMBER(IFERROR(SEARCH(Sheet4!$A$3;A2;1);""))
از وجود نزدیک ترین حروف تایپی به ستون نام و نام خانوادگی مطلع میشیم.چنانچه نام مورد نظر و یا نزدیک ترین حروف به آن وجود داشت عدد 1 و در غیر اینصورت عدد صفر میگیره.
در ستون کمکی دوم (i) هم با این استفاده ازفرمول زیر تعداد 1 ها یعنی مورد های نزدیک به جستجو شمارش میشن و یک ها( نام های مورد نظر ) رو رو به نوعی از هم تفکیک میکنیم که در مرحله بعد قابل بازیابی و تشخیص باشند .
کد PHP:
=IF(H2=1;COUNTIF($H$2:H2;1);"")
در ستون سوم کمکی (j) با استفاده از این فرمول تمام موارد یافته شده رو لیست میکنیم.
کد PHP:
=IFERROR(INDEX($A$2:$A$33;MATCH(ROWS($I$2:I2);$I$2:$I$33;0));"")
ستون سوم لیست اصلی ماست که باید نمایش داده بشه که با استفاده از name mangerو انتخاب نام DropDownList (دقیقا نامی که در combo box قرار داده شد) و قرار دادن محدوده پویای آن در قسمت Refers to که در این فایل نمونه توضیحی محدوده زیر میباشد.
کد PHP:
=$J$2:INDEX($J$2:$J$33;MAX($I$2:$I$33);1)
و در آخر یک کد کوتاه vba رو باید در قسمت کد نویسی شیتی که combo box در آن قرار داره بنویسید.
کد:
Private Sub ComboBox1_Change()
ComboBox1.ListFillRange = "DropDownList"
Me.ComboBox1.DropDown
End Sub
منابع مورد استفاده در نمونه فایل ارسالی پیوست گردید.
موفق باشید.
علاقه مندی ها (Bookmarks)