در قسمت های اول و دوم طراحی و کدنویسی فرم در اکسل ما یاد گرفتیم که چگونه یک یوزرفرم(Userform) طراحی و اطلاعات آن را توسط کدهای وی بی ای(VBA) به سلول های صفحه گسترده جهت ثبت و ذخیره ارسال کنیم.
در قسمت سوم آموزش رایگان ساخت فرم در اکسل شما با نحوه استفاده و کاربرد لیست باکس(Listbox) در یوزرفرم ها آشنا خواهید شد لذا خواهشمندیم تا پایان این پست آموزشی مارا همراهی کنید و نظرات خوب خود را برای ما در قسمت نظرات ارسال کنید.
کاربرد لیست باکس (Listbox) در یوزرفرم چیست؟
در قسمت دوم آموزش رایگان ساخت فرم در اکسل به این سوال پاسخ داده شد. به تصویر زیر دقت کنید:

لیست باکس در یوزرفرم های وی بی ای نقش دیتابیس(DataBase) در نرم افزارها را ایفا می کند که حال می تواند نمایی از داده های ثبت شده و یا قدرت انتخاب به منظور اعمال تغییرات داده های ثبت شده را به کاربران دهد.
به منظور اضافه کردن محتوا به Listbox از دستورات زیر استفاده می کنیم:
1 2 3 4 5 |
With ListBox1 .ColumnHeads = True .ColumnCount = 4 .RowSource = "Sheet1!A2:D15" End With |
در دستورات فوق، ما ابتدا با خطاب قرار دادن Listbox شماره 1 ابتدا تعریف نمودیم که دارای سرتیتر می باشد و در ادامه تعداد ستون های این لیست باکس را برابر با 4 تعیین نمودیم و در پایان نیز توسط RowSource اقدام به تعریف محدوده داده های این لیست باکس نمودیم.
اضافه نمودن لیست باکس(Listbox) به یوزرفرم
با توجه به مطالبی که در قسمت فوق ارائه شد، نیاز داریم تا کمی فرم خودمان را برای درج لیست باکس تغییر دهیم تا فرم شکیل و زیباتری داشته باشیم. بدین منظور یوزرفرم خود را مطابق با تصویر زیر تغییر می دهیم:

حال فضای کافی برای ایجاد لیست باکس ایجاد گردیده است لذا با انتخاب و درگ کردن اقدام به ترسیم آن همانند تصویر زیر خواهیم نمود:

اضافه نمودن لیست باکس(Listbox) تا به اینجا به اتمام رسید حال در ادامه نحوه کدنویسی آن را باهم بررسی خواهیم نمود.
کدنویسی لیست باکس(Listbox) در یوزرفرم
به منظور مقداردهی اولیه لیست باکس نیاز داریم تا در بخش UserForm_Initialize کدنویسی مربوطه را همانند تصویر زیر انجام دهیم:

در ادامه کدهای وی بی ای این بخش را بصورت مجزا برای شما قرار دادیم:
1 2 3 4 5 |
With ListBox1 .ColumnHeads = True .ColumnCount = 4 .RowSource = "Sheet1!A2:D10" End With |
از آنجاییکه جدول داده های ما دارای سرتیتر است لذا مقدار ColumnHeads را برابر با True و تعداد ستون های آن را برابر با عدد 4 قرار دادیم(A:D) و در پایان توسط Rowsource اقدام به مقدار دهی این لیست باکس نمودیم.
خروجی شما با اجرای فرم بصورت زیر خواهد بود:

با درج و ثبت اطلاعات متوجه خواهید شد که فرم فوق دارای یک ضعف بزرگ و آن هم عدم بروزرسانی لیست باکس پس از درج داده جدید است. به منظور برطرف نمودن این ضعف می بایست دو خط کد به انتهای کدهای دکمه Submit اضافه کنیم تا پس از ثبت هر رکورد جدید، فرم را به منظور بروزرسانی لیست باکس Unload نماید. به تصویر زیر دقت کنید:

در ادامه کدهای این باتن را به صورت مجزا مشاهده خواهید نمود:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Private Sub CommandButton1_Click() Dim LastRow As Long LastRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row Range("A" & LastRow).Value = TextBox1.Text Range("B" & LastRow).Value = TextBox2.Text Range("C" & LastRow).Value = TextBox3.Text Range("D" & LastRow).Value = ComboBox1.Text TextBox1.Text = Empty TextBox2.Text = Empty TextBox3.Text = Empty ComboBox1.Text = Empty Unload Me UserForm1.Show End Sub |
در دستورات فوق، ما توسط Unload Me یوزرفرم فعال را Unload و توسط UserForm1.Show آن را مجدد نمایش دادیم که این عمل برای بروزرسانی لیست باکس پس از درج رکورد جدید الزامی است. حال اگر اقدام به درج رکورد جدید و ثبت آن کنید مشاهده خواهید نمود که داده های لیست باکس(Listbox) نیز بصورت اتوماتیک بروزرسانی خواهد شد.
در پایان امیدواریم قسمت سوم آموزش رایگان ساخت Userform در اکسل نیز مورد رضایت شما سروران گرامی قرار گرفته باشد. همانطور که در ابتدای این پست آموزشی نیز گفته شد مارا با نظرات خوب خود راهنمایی کنید تا به بهترین شکل ممکن بتوانیم در حوزه آموزش کشور عزیزمان فعالیت کنیم.
سایر مطالب مرتبط با طراحی و کدنویسی یوزرفرم در اکسل
- قسمت اول طراحی و کدنویسی یوزرفرم در اکسل
- قسمت دوم طراحی و کدنویسی یوزرفرم در اکسل
- مجموعه الفبای وی بی ای در اکسل (پیشنهاد برای شروع ماکرونویسی)
- آموزش تصویری طراحی و کدنویسی دفترچه تلفن در اکسل (فصل اول– فصل دوم – فصل سوم)
- آموزش تصویری طراحی و کدنویسی نرم افزار دریافت و پرداخت در اکسل
- آموزش تصویری طراحی و کدنویسی نرم افزار صندوقداری در اکسل (فصل اول – فصل دوم)
- حمایت از سایت آموزشی اکسل لرن (اختیاری)