لیست باکس جهت ایجاد لیست کشویی با انتخاب بیش از یک آیتم.
در لیست های کشویی که توسط ابزار Data validation ایجاد می گردد امکان انتخاب بیش از یک قلم در لیست وجود ندارد.
یعنی شما در هر بار محدود به انتخاب یک آیتم هستید.
اگر بخواهید یک لیست کشویی ایجاد کنید که در کنار تمام گزینه ها چک باکس وجود داشته باشد
و با تیک زدن چک باکس چند آیتم را انتخاب کنید و با کلیک یک دکمه نتیجه را در یک سلول دلخواه نمایش دهید در این آموزش همراه ما باشید
استفاده از لیست باکس جهت ایجاد لیست کشویی با امکان انتخاب همزمان چند آیتم
1- ایجاد لیست باکس با محدوده ای از داده ها
2- نامگذاری محدوده شامل داده ها
3- ایجاد یک شکل (دکمه) برای کمک به انتقال موارد انتخاب شده در یک سلول دلخواه
نتیجه این آموزش مطابق تصویر زیر خواهد بود
داده های مورد نظر جهت ایجاد لیست کشویی را در سلول های A2 تا A11 وارد می کنیم.
از این داده ها به عنوان منبع داده های لیست باکس استفاده خواهیم کرد.
برای ایجاد دکمه خروجی از شکل های موجود در اکسل استفاده می کنیم تا پس از انتخاب چند آیتم با کلیک بر روی این دکمه، موارد انتخاب شده را به سلول دلخواه بفرستیم
ایجاد لیست باکس با یک منبع از داده ها
برای ایجاد لیست باکس از سربرگ Developer در نوار ابزار اکسل استفاده می کنیم.
تذکر: سربرگ Developer به طور پیش فرض فعال نیست و باید ابتدا آن را مطابق توضیحات زیر فعال کنید
فعال کردن نوار ابزار Developer
بر روی File در کاربرگ اکسل کلیک کنید
پنجره ای ظاهر می شود که در انتهای آن عبارت Options دیده می شود.
بر روی Options کلیک کنید تا پنجره تنظیمات آن باز شود.
از قسمت چپ پنجره بر روی Customize Ribbon کلیک کنید.
دو پنجره ظاهر می شوند که از پنجره سمت راست تیک کنار گزینه Developer را فعال کنید
شکل های زیر مراحل انجام کار را نمایش می دهد
اکنون می بینید که سربرگ Developer به نوار ابزار اضافه شده است.
برای ایجاد لیست باکس به مسیر زیر بروید:
Developer>insert>List Box (Active X Control)
دقت کنید که لیست باکس را از قسمت Active X Control انتخاب کنید
بعد از انتخاب لیست باکس یک علامت + ظاهر می شود. در یک محل دلخواه کلیک چپ موس را نگهداشته و کادری ایجاد کنید
سپس بر روی کادر ایجاد شده راست کلیک کرده و از پنجره ظاهر شده Properties را انتخاب نمایید.
در کادر محاوره ای Properties تنظیمات زیر را انجام دهید:
در مقابل کادر عبارت ListFillRange ناحیه داده هایی که می خواهید در لیست باکس ظاهر شوند را انتخاب کنید (A2:A11)
در مقابل کادر ListStyle عبارت 1-fmList StyleOption را انتخاب نمایید
در مقابل کادر MultiSelect عبارت 1-fmMultiSelectMulti را انتخاب کنید
سپس کادر محاوره ای را ببندید
نامگذاری سلول حاوی اطلاعات خروجی
به عنوان مثال اگر قصد دارید که تامام اطلاعات انتخاب شده در سلول مشخصی مثلاً E4 درج شوند
به روش زیر یک نام به سلول اختصاص دهید
ابتدا سلول E4 را انتخاب کنید. در کادر نام (Name Box) نام دلخواهی مثلاً ListBoxOutput را تایپ کرده و کلید Enter را فشار دهید
x
انتخاب شکل (دکمه) جهت کمک به خروجی موارد انتخاب شده
برای قراردادن شکل به مسیر زیر بروید
Insert>Shapes>Rectangle
تذکر: در آفیس نسخه 2019 عنوان Shapes در زیرگروه Illustrations قرار گرفته است.
یک مستطیل در صفحه رسم کنید (در اینجا من مستطیل را در سلول C4 قرار داده ام)
روی مستطیل راست کلیک کرده و از پنجره ظاهر شده بر روی عبارت Assign Macro کلیک کنید
پنجره محاوره ای باز می شود. بر روی New کلیک کرده و سپس بر روی OK کلیک کنید
پنجره کدنویسی VBA باز می شود.
دو خط کد نوشته شده را حذف کرده و کدهای زیر را کپی و در پنجره کدنویسی قرار دهید
به یاد داشته باشید برای ذخیره فایل حاوی ماکرو (کد VBA) حتماً باید فایل به صورت Macro Enable ذخیره شود
در غیر این صورت کدها کار نخواهند کرد
برای دیدن اصل مقاله به زبان انگلیسی روی این لینک کلیک کنید
Sub Rectangle1_Click()
Dim xSelShp As Shape, xSelLst As Variant, I, J As Integer
Dim xV As String
Set xSelShp = ActiveSheet.Shapes(Application.Caller)
Set xLstBox = ActiveSheet.ListBox1
If xLstBox.Visible = False Then
xLstBox.Visible = True
xSelShp.TextFrame2.TextRange.Characters.Text = “انتخاب محصولات ”
xStr = “”
xStr = Range(“ListBoxOutput”).Value
If xStr <> “” Then
xArr = Split(xStr, “;”)
For I = xLstBox.ListCount – 1 To 0 Step -1
xV = xLstBox.List(I)
For J = 0 To UBound(xArr)
If xArr(J) = xV Then
xLstBox.Selected(I) = True
Exit For
End If
Next
Next I
End If
Else
xLstBox.Visible = False
xSelShp.TextFrame2.TextRange.Characters.Text = “باز کردن لیست”
For I = xLstBox.ListCount – 1 To 0 Step -1
If xLstBox.Selected(I) = True Then
xSelLst = xLstBox.List(I) & “;” & xSelLst
End If
Next I
If xSelLst <> “” Then
Range(“ListBoxOutput”) = Mid(xSelLst, 1, Len(xSelLst) – 1)
Else
Range(“ListBoxOutput”) = “”
End If
End If
End Sub
با سلام
این کار را اگر بخواهیم در محیط vba که یوزرفرم طراحی کردیم و لیست باکس ایجاد کردیم چگونه میشود؟
سلام
برای انجام این کار به مقاله “لیست کشویی باچک باکس” در همین سایت مراجعه کن