کد نویسی لیست باکس در اکسل — با استفاده از VBA و تصویری

تصویر شاخص کد نویسی لیست باکس در اکسل

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

این مقاله به بررسی نحوه استفاده از کد نویسی لیست باکس در اکسل، پر کردن و مدیریت آن با استفاده از VBA پرداخته و تفاوت‌های آن با کامبو باکس را نیز شرح می‌دهد تا کاربران بتوانند از این ابزار قدرتمند در پروژه‌های خود بهره‌برداری کنند.

برای آموزش کد نویسی در اکسل می‌توانید مقاله قبلی ما با عنوان برنامه نویسی در اکسل را مطالعه کنید.

لیست باکس در VBA اکسل چیست؟

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

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

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

مراحل ایجاد لیست باکس در اکسل به شرح زیر است:

مرحله ۱: فعال کردن تب Developer در نوار ابزار اکسل برای دسترسی به کنترل‌های ActiveX. در پنجره Excel Options، روی Customize Ribbon کلیک کرده و گزینه Developer را انتخاب کنید.

مرحله ۲: در تب Developer، روی Insert کلیک کرده و سپس کنترل List Box را انتخاب کنید. با این کار یک لیست باکس جدید در برگه اکسل درج می‌شود.

تصویری از انتخاب کنترل List Box در اکسل

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

تصویری از کشیدن مستطیل در اکسل برای ایجاد لیست باکس

مرحله ۴: لیست باکس را انتخاب کنید، به تب Developer بروید و گزینه Properties را انتخاب کنید. پنجره Properties باز می‌شود.

تصویری از باز شدن پنجره properties

مرحله ۵: در پنجره Properties، مقدار days را در قسمت ListFillRange وارد کنید. days محدوده نام‌گذاری‌شده‌ای برای روزهای هفته است.

تصویری از وارد کردن مقدار days در ListFillRange

مرحله ۶: روی ویژگی MultiSelect کلیک کنید. از لیست کشویی، گزینه ۱- fmMultiSelectMulti را انتخاب کنید، همان‌طور که در تصویر بعدی نشان داده شده است.

تصویری از کلیک MultiSelect

مرحله ۷: روی ویژگی ListStyle کلیک کنید. از لیست کشویی، گزینه ۱- fmListStyleOption را انتخاب کنید. این گزینه، چک‌باکس‌هایی را در سمت چپ موارد لیست‌شده اضافه می‌کند، همان‌طور که در تصویر زیر نشان داده شده است.

تصویری از کلیک ListStyle

مرحله ۸: پنجره Properties را ببندید. لیست باکس به شکل نشان داده‌شده در تصویر ظاهر می‌شود.

تصویری از لیست باکس ایجاد شده در اکسل

نکته: می‌توانید با کلیک روی Design Mode گزینه Design Mode Off را انتخاب کنید. این کار حالت طراحی را غیرفعال می‌کند.

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

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

مراحل ایجاد لیست باکس در VBA

مرحله ۱: روی لیست باکس راست‌کلیک کنید و اطمینان حاصل کنید که Design Mode فعال است. این کار لیست باکس را به یک سلول متصل می‌کند.

مرحله ۲: در پنجره Properties، ویژگی LinkedCell را پیدا کرده و مقدار B17 را وارد کنید، همان‌طور که در تصویر زیر نشان داده شده است.

تصویری از انتخاب ویژگی LinkedCell

مرحله ۳: در ویژگی ListFillRange مقدار Month را وارد کنید.

تصویری از انتخاب ListFillRange

مرحله ۴: لیست باکس همان‌طور که در تصویر بعدی نشان داده شده است، ظاهر می‌شود.

تصویری از لیست باکس ایجاد شده

🔹 نکته: مقدار در سلول B17 هنگام تغییر انتخاب در لیست باکس تغییر خواهد کرد.

تصویری از تغییر سلول B17

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

در کدنویسی لیست باکس در اکسل با VBA، می‌توان لیست باکس را در یک UserForm ایجاد کرد تا کاربران بتوانند به‌راحتی داده‌ها را مشاهده و انتخاب کنند. در ادامه، مراحل ایجاد و مقداردهی لیست باکس در UserForm را بررسی می‌کنیم.

مراحل ایجاد لیست باکس در UserForm

مرحله ۱: در تب Developer، روی Visual Basic کلیک کنید یا کلیدهای Alt + F11 را فشار دهید.

تصویری از کلیک Visual Basic

مرحله ۲: از منوی Insert، گزینه UserForm را انتخاب کنید.

تصویری از کلیک UserForm

مرحله ۳: از Toolbox، کنترل List Box را روی UserForm بکشید و رها کنید.

تصویری از کشیدن لیست باکس روی UserForm

مرحله ۴: روی UserForm دوبار کلیک کنید و رویداد UserForm را انتخاب کنید، همان‌طور که در تصویر زیر نشان داده شده است.

تصویری از انتخاب UserForm

مرحله ۵: کد زیر را در بخش مربوطه اضافه کنید.

Private Sub UserForm_Initialize()

ListBox1.AddItem "MBA"

ListBox1.AddItem "MCA"

ListBox1.AddItem "MSC"

ListBox1.AddItem "MECS"

ListBox1.AddItem "CA"

End Sub

مرحله ۶: کلید F5 را فشار دهید تا کد اجرا شود.

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

در کد نویسی لیست باکس در اکسل با VBA، گاهی اوقات نیاز داریم که لیست باکس‌ها به‌صورت داینامیک و بر اساس تعامل کاربر ساخته شوند. این می‌تواند به‌وسیله‌ی CommandButton و در حین اجرای برنامه انجام شود. در ادامه نحوه افزودن یک کنترل داینامیک به لیست باکس در UserForm را توضیح می‌دهیم.

مراحل افزودن کنترل داینامیک به لیست باکس در UserForm با استفاده از VBA:

مرحله ۱: از Toolbox، یک CommandButton را به UserForm اضافه کنید.

تصویری از اضافه کردن CommandButton

مرحله ۲: روی CommandButton راست‌کلیک کنید و گزینه Properties را انتخاب کنید.

تصویری از کلیک properties

مرحله ۳: مقدار Caption را در پنجره Properties به Create_Listbox تغییر دهید.

تصویری از تغییر مقدار Caption

مرحله ۴: روی CommandButton دوبار کلیک کنید. کد زیر ظاهر می‌شود.

تصویری از کد ظاهر شده

مرحله ۵: نام رویه (Procedure) را Add_Dynamic_Listbox قرار دهید.

Sub Add_Dynamic_Listbox()

'Add Dynamic List Box and assign it to object 'LstBx'

Set LstBx = UserForm3.Controls.Add("Forms.ListBox.1")

'List Box Position

LstBx.Left = 20

LstBx.Top = 10

End Sub

مرحله ۶: کلید F5 را فشار دهید تا ماکرو اجرا شود.

نحوه افزودن آیتم‌ها به کنترل لیست باکس در VBA

در کد نویسی لیست باکس در اکسل با VBA، می‌توان آیتم‌های مختلفی را به لیست باکس اضافه کرد. این کار می‌تواند به‌صورت دستی یا با دریافت داده از محدوده‌ای در شیت اکسل انجام شود. در ادامه یک نمونه کد برای افزودن آیتم‌ها به لیست باکس آورده شده است:

Private Sub Insert_Items_To_LstBox()
    ListBox1.AddItem "Item 1"
    ListBox1.AddItem "Item 2"
    ListBox1.AddItem "Item 3"
    ListBox1.AddItem "Item 4"
    ListBox1.AddItem "Item 5"
End Sub

توضیح کد: ابتدا یک تابع خصوصی (Private Sub) ایجاد شده که هنگام اجرا، آیتم‌های مشخص‌شده را به لیست باکس (ListBox1) اضافه می‌کند. با استفاده از متد AddItem، هر آیتم به لیست باکس اضافه می‌شود.

روش‌های دیگر برای افزودن آیتم‌ها به لیست باکس در اکسل با VBA:

دریافت داده از شیت اکسل: اگر بخواهید داده‌ها را از محدوده‌ای مشخص در شیت اکسل دریافت کنید، می‌توانید از حلقه استفاده کنید:

Private Sub Insert_Items_From_Sheet()
    Dim i As Integer
    For i = 1 To 5
        ListBox1.AddItem Sheets("Sheet1").Cells(i, 1).Value
    Next i
End Sub

در این کد، مقادیر ستون اول (A1 تا A5) از شیت Sheet1 خوانده شده و به لیست باکس اضافه می‌شود.

نحوه پاک کردن آیتم‌ها از کنترل لیست باکس با استفاده از VBA

گاهی اوقات نیاز داریم آیتم‌های موجود در لیست باکس را پاک کنیم، مخصوصاً زمانی که داده‌ها تغییر می‌کنند یا نیاز به بارگذاری مجدد اطلاعات داریم.

چرا باید لیست باکس را پاک کنیم؟

  • به‌روزرسانی داده‌ها: هنگام تغییر اطلاعات، پاک کردن لیست باکس و بارگذاری مجدد آن ضروری است.
  • مدیریت بهتر رابط کاربری: اگر کاربر قبلاً داده‌ای انتخاب کرده باشد، می‌توان لیست را برای ورود اطلاعات جدید پاک کرد.

برای حذف تمام آیتم‌های یک لیست باکس، می‌توان از دستور Clear استفاده کرد به صورت زیر استفاده کرد:

Sub Clr_LstBx()
    UserForm3.ListBox1.Clear
End Sub

مثال: فرض کنید داده‌های فروش روزانه داریم. می‌خواهیم یک رابط کاربری گرافیکی برای این داده‌های فروش ایجاد کنیم که به ما امکان دهد آیتم‌هایی را از لیست باکس انتخاب کنیم. برای دریافت جزئیات فروش، باید سلول ایندکس را به cell link تغییر داده و فرمول VLOOKUP را اعمال کنیم، همان‌طور که در تصاویر زیر نشان داده شده است.

تصویری از تغییر سلول index به cel link

تصویری از لیست باکس داده‌های فروش روزانه

چگونه از لیست باکس در اکسل استفاده کنیم؟

لیست باکس یکی از ابزارهای مفید در اکسل است که برای نمایش و مدیریت داده‌ها در UserForm استفاده می‌شود. این ابزار به کاربران امکان می‌دهد که از میان چندین گزینه، یک یا چند مورد را انتخاب کنند.

ویژگی‌های لیست باکس:

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

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

چگونه داده‌ها را از لیست باکس در اکسل بازیابی کنیم؟

داده‌ها تنها در صورتی به‌طور مؤثر استفاده می‌شوند که به درستی بازیابی شوند. مراحل بازیابی داده‌ها از لیست باکس به شرح زیر است:

  • پس از راست‌کلیک کردن روی لیست باکس، گزینه Format Control را انتخاب کنید.
  • در جعبه‌ای که با عنوان Cell Link مشخص است، مختصات یک سلول خالی را تایپ کنید.
  • سلولی را انتخاب کنید که داده‌ها از لیست باکس در آن نمایش داده می‌شوند. باید از فرمول زیر استفاده کنید:
"=INDEX(:,,0)"

نکته: Cell Link همان سلولی است که در مرحله دوم مشخص شده است. مقدار نمایش داده‌شده در سلول، به انتخاب کاربر در لیست باکس بستگی دارد. اولین مقدار لیست به اولین سلول اختصاص داده می‌شود و آخرین مقدار به آخرین سلول.

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

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

در کد نویسی لیست باکس در اکسل، ممکن است این سؤال پیش آید که چه تفاوتی بین لیست باکس و کمبو باکس وجود دارد. تفاوت‌های اصلی بین این دو به شرح زیر است:

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

نتیجه‌گیری

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

میزان رضایتمندی
لطفاً میزان رضایت خودتان را از این مطلب با دادن امتیاز اعلام کنید.
[ امتیاز میانگین 5 از 2 نفر ]
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع و مراجع:
wallstreetmojo

دیدگاه‌ خود را بنویسید

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

پیمایش به بالا