لیست باکس جهت ایجاد لیست کشویی با انتخاب بیش از یک آیتم.

در لیست های کشویی که توسط ابزار Data validation ایجاد می گردد امکان انتخاب بیش از یک قلم در لیست وجود ندارد.

یعنی شما در هر بار محدود به انتخاب یک آیتم هستید.

مقاله ایجاد لیست کشویی ساده 

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

و با تیک زدن چک باکس چند آیتم را انتخاب کنید و با کلیک یک دکمه نتیجه را در یک سلول دلخواه نمایش دهید در این آموزش همراه ما باشید

 

استفاده از لیست باکس جهت ایجاد لیست کشویی با امکان انتخاب همزمان چند آیتم

1- ایجاد لیست باکس با محدوده ای از داده ها
2- نامگذاری محدوده شامل داده ها
3- ایجاد یک شکل (دکمه) برای کمک به انتقال موارد انتخاب شده در یک سلول دلخواه

نتیجه این آموزش مطابق تصویر زیر خواهد بود

لیست کشویی با انتخاب چندگانه

داده های مورد نظر جهت ایجاد لیست کشویی را در سلول های A2 تا A11 وارد می کنیم.

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

ایجاد لیست باکس با یک منبع از داده ها

برای ایجاد لیست باکس از سربرگ Developer در نوار ابزار اکسل استفاده می کنیم.
تذکر: سربرگ Developer به طور پیش فرض فعال نیست و باید ابتدا آن را مطابق توضیحات زیر فعال کنید

فعال کردن نوار ابزار Developer

بر روی File در کاربرگ اکسل کلیک کنید
پنجره ای ظاهر می شود که در انتهای آن عبارت Options دیده می شود.
بر روی Options کلیک کنید تا پنجره تنظیمات آن باز شود.
از قسمت چپ پنجره بر روی Customize Ribbon کلیک کنید.

دو پنجره ظاهر می شوند که از پنجره سمت راست تیک کنار گزینه Developer را فعال کنید
شکل های زیر مراحل انجام کار را نمایش می دهد

افزودن ابزار Developer

نمایش ابزار Developer

اکنون می بینید که سربرگ Developer به نوار ابزار اضافه شده است.
برای ایجاد لیست باکس به مسیر زیر بروید:
Developer>insert>List Box (Active X Control)
دقت کنید که لیست باکس را از قسمت Active X Control انتخاب کنید

hd[hn gdsj fh;s
بعد از انتخاب لیست باکس یک علامت + ظاهر می شود. در یک محل دلخواه کلیک چپ موس را نگهداشته و کادری ایجاد کنید
سپس بر روی کادر ایجاد شده راست کلیک کرده و از پنجره ظاهر شده 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