آموزش رایگان ساخت فرم در اکسل
به نام خداوند بخشنده و مهربان، امروز قصد داریم آموزش ساخت فرم ورود اطلاعات در vba اکسل و کدنویسی آن را خدمت شما بصورت کاملا رایگان ارائه دهیم. البته پیشنهاد میکنیم قبل از اینکه اقدام به یادگیری طراحی و کدنویسی فرم ها در اکسل توسط وی بی ای کنید با دستورات مقدماتی این زبان برنامه نویسی توسط مجموعه رایگان وی بی ای آشنایی پیدا کنید. با ما تا انتهای این پست آموزشی همراه باشید.
ساخت فرم در vba اکسل
در ابتدا شما می بایست از طریق سربرگ Developer وارد محیط Visual Basic شوید البته اینکار از طریق کلیدمیانبر Alt + F11 نیز امکان پذیر است. در ادامه محیط VBE را مشاهده خواهید نمود:

حال با کلیک کردن برروی سربرگ Insert در محیط VBE اقدام به اضافه کردن یک Userform کنیم:

با استفاده از Textbox می توانیم فیلد ورود اطلاعات و با استفاده از Label می توانیم توضیحات مربوط به هر فیلد را ایجاد کنیم. در تصویر زیر شما Textbox و Label را مشاهده خواهید نمود:

با انتخاب Label و Textbox اقدام به طراحی یک فرم دلخواه در محیط Userform خواهیم نمود.
حال یک لیبل همانند تصویر زیر در محیط Userform ایجاد نمایید:

با انتخاب Label ایجاد شده، از پنجره Properties در بخش Caption اقدام به تغییر عنوان این Label خواهیم نمود:

دو Label دیگر با عناوین LastName و Age همانند تصویر زیر ایجاد خواهیم نمود:

بهتر است کمی فضای ایجاد شده Label را کمتر کنید تا فرم زیباتری از نظر شکل و شمایل داشته باشید. بدین منظور ابتدا تمامی لیبل های ایجاد شده را با نگاه داشتن Ctrl انتخاب و سپس همانند تصویر زیر اقدام به انتخاب گزینه Size to fit کنید:

خروجی شما بصورت زیر خواهد بود:

همانطور که در تصویر فوق نیز مشاهده می کنید، فضای Label نسبت به قبل فضای کمتری را اشغال نمود.
حال نیاز است برای هر لیبل یک فیلد با استفاده از ابزار Textbox همانند تصویر زیر ایجاد نماییم:

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

دکمه (CommandButton) را نیز همانند Label نام گذاری خواهیم کرد و عنوان آن را به Submit تغییر می دهیم:

کدنویسی فرم ورود اطلاعات در اکسل(vba)
حال زمان آن رسیده است که با استفاده از کدهای ماکرونویسی (زبان برنامه نویسی وی بی ای)، داده های وارد شده در فیلدهای Userform را یکایک به سلول های صفحه گسترده اکسل منتقل و آنها را ذخیره کنیم.
رویه این بخش از طراحی و کدنویسی نرم افزار در دو مرحله به ترتیب زیر صورت می گیرد:
- انتقال داده های Userform به صفحه گسترده اکسل به منظور ذخیره سازی
- حذف داده های Userform به منظور آماده سازی و ورود مجدد اطلاعات
بدین منظور در محیط VBE برروی CommandButton ایجاد شده دابل کلیک کنید تا وارد محیط کدنویسی این دکمه که عهده دار عملیات های مذکور است، شوید:

حال به دستورات زیر در این CommandButton دقت کنید:
1 2 3 4 5 |
Private Sub CommandButton1_Click() Range("A2").Value = TextBox1.Text Range("B2").Value = TextBox2.Text Range("C2").Value = TextBox3.Text End Sub |
در کدهای فوق ما اشاره کردیم که مقدار Textbox1 در سلول A2 ، مقدار Textbox2 در سلول B2 و در پایان مقدار Textbox3 در سلول C2 درج گردد. با فرض اینکه دیتابیس ما بصورت زیر طراحی گردیده است:

با زدن کلید F5 به منظور اجرای یوزرفرم و با مقداردهی فیلدهای فرم همانند تصویر زیر:

هنگام کلیک کردن برروی باتن Submit اطلاعات در دیتابیس طراحی شده بصورت زیر ثبت خواهد شد:

همانطور که در تصویر فوق نیز مشاهده می کنید، اطلاعات به درستی به سلول های صفحه گسترده اکسل منتقل شدند منتهی کدهای نوشته شده در قسمت CommandButton دو ضعف بزرگ دارد که در قسمت قبل نیز به آنها اشاره گردید.
ضعف اول این است که اگر شما اقدام به درج اطلاعات جدیدی کنید، اطلاعات جدید برروی اطلاعات قبلی ثبت می گردد و ضعف دوم این است که اطلاعات پس از درج، از Userform حذف نمی شود که فرم برای ورود داده های بعدی آماده گردد.
به منظور حل کردن ضعف اول نیاز به کدی داریم که آخرین سلول پر را شناسایی کنیم و سپس اقدام به درج داده های جدید کنیم. به کدهای وی بی ای زیر دقت کنید:
1 2 3 4 5 6 7 |
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 End Sub |
در کدهای وی بی ای فوق، ما یک متغیر به نام LastRow تعریف نمودیم که آخرین سلول موجود در ستون A صفحه Sheet1 را شناسایی و به آن یک مقدار (+1) اضافه می کند تا سلول خالی بعدی برای درج اطلاعات جدید انتخاب شوند. در ادامه این متغیر را جایگزین شماره ردیف هریک از سلول ها نمودیم. به تصویر زیر دقت کنید:

همانطور که در تصویر فوق نیز مشاهده می کنید، اطلاعات به درستی پس از اطلاعات قبلی درج گردید.
حال نیاز است دستوراتی بنویسیم که پس از درج اطلاعات، فیلدهای این یوزرفرم را برای ما خالی (Empty) و به نحوی فرم را برای ورود داده بعدی آماده کند. به کدهای زیر دقت کنید:
1 2 3 4 5 6 7 8 9 10 11 12 |
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 TextBox1.Text = Empty TextBox2.Text = Empty TextBox3.Text = Empty End Sub |
حال اگر داده های را در یوزرفرم درج و آن را با کلیک کردن برروی Submit ثبت کنیم، همانند تصویر زیر اطلاعات یوزرفرم پس از ثبت حذف خواهند شد و یا به عبارتی فرم برای ورود اطلاعات بعدی آماده خواهد شد:

امیدواریم پست آموزش رایگان ساخت فرم در اکسل مورد رضایت شما عزیزان قرار گرفته باشد حال اگر سوالی در این خصوص وجود دارد می توانید آن را در قسمت نظرات برای ما ارسال نمایید تا در اسرع وقت نسبت به پاسخگویی آن اقدام کنیم. همچنین می توانید از سایت آموزشی ما به منظور تولید محتوای بیشتر حمایت کنید. (لینک حمایت از سایت اکسل لرن)
اگر قسمتی از کدهای فوق را به خوبی درک نکردین حتما در قسمت نظرات مطرح کنید تا یک پست آموزشی مجزا جهت توضیح کامل کدها تهیه گردد. همچنین اگر تمایل به ادامه تولید این نوع آموزش های مرتبط با کدنویسی به زبان وی بی ای در اکسل دارید در قسمت نظرات پست، تمایل خود را ارسال کنید.
موفق و پیروز باشید.
سایر مطالب مرتبط با ماکرونویسی در اکسل
- طراحی و کدنویسی فرم ورود اطلاعات (فیلم آموزشی)
- طراحی و کدنویسی نرم افزار دریافت و پرداخت
- طراحی و کدنویسی نرم افزار صندوقداری (فصل اول، فصل دوم)
- طراحی و کدنویسی نرم افزار دفترچه تلفن (فصل اول، فصل دوم، فصل سوم)