آموزش رایگان ساخت فرم در اکسل

وبسایت آموزشی اکسل

آموزش رایگان ساخت فرم در اکسل

به نام خداوند بخشنده و مهربان، امروز قصد داریم آموزش ساخت فرم ورود اطلاعات در 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 را یکایک به سلول های صفحه گسترده اکسل منتقل و آنها را ذخیره کنیم.

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

  1. انتقال داده های Userform به صفحه گسترده اکسل به منظور ذخیره سازی
  2. حذف داده های Userform به منظور آماده سازی و ورود مجدد اطلاعات

بدین منظور در محیط VBE برروی CommandButton ایجاد شده دابل کلیک کنید تا وارد محیط کدنویسی این دکمه که عهده دار عملیات های مذکور است، شوید:

آموزش رایگان ساخت فرم در اکسل
آموزش رایگان ساخت فرم در اکسل

حال به دستورات زیر در این CommandButton دقت کنید:

در کدهای فوق ما اشاره کردیم که مقدار Textbox1 در سلول A2 ، مقدار Textbox2 در سلول B2 و در پایان مقدار Textbox3 در سلول C2 درج گردد. با فرض اینکه دیتابیس ما بصورت زیر طراحی گردیده است:

آموزش رایگان ساخت فرم در اکسل

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

آموزش رایگان ساخت فرم در اکسل
آموزش رایگان ساخت فرم در اکسل

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

آموزش رایگان ساخت فرم در اکسل

همانطور که در تصویر فوق نیز مشاهده می کنید، اطلاعات به درستی به سلول های صفحه گسترده اکسل منتقل شدند منتهی کدهای نوشته شده در قسمت CommandButton دو ضعف بزرگ دارد که در قسمت قبل نیز به آنها اشاره گردید.

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

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

در کدهای وی بی ای فوق، ما یک متغیر به نام LastRow تعریف نمودیم که آخرین سلول موجود در ستون A صفحه Sheet1 را شناسایی و به آن یک مقدار (+1) اضافه می کند تا سلول خالی بعدی برای درج اطلاعات جدید انتخاب شوند. در ادامه این متغیر را جایگزین شماره ردیف هریک از سلول ها نمودیم. به تصویر زیر دقت کنید:

آموزش رایگان ساخت فرم در اکسل

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

حال نیاز است دستوراتی بنویسیم که پس از درج اطلاعات، فیلدهای این یوزرفرم را برای ما خالی (Empty) و به نحوی فرم را برای ورود داده بعدی آماده کند. به کدهای زیر دقت کنید:

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

آموزش رایگان ساخت فرم در اکسل

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

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

موفق و پیروز باشید.

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

گروه آموزشی اکسل لرن
فیسبوک توییتر گوگل + لینکداین تلگرام واتس اپ کلوب

امتیاز شما به مطلب

دوست داشتم: 34
دوست نداشتم: 2
میانگین امتیازات: 17

43 دیدگاه در “آموزش رایگان ساخت فرم در اکسل

سلام استاد.ببخشین فرق کار کردن با vba و درست کردن عادی چیه مثلا با vba یه چیزی رو میخواییم انجام بدیم چرا باید از vba استفاده کنیم اونکه سخت نوشتنش البته واسه من…و خیلی عالی بود ممنون از زحماتتون بقیشون رو هم زحمتشون رو بکشین

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

ببخشین من مشکلم هم اونجاس چیکار کنم مثلا وقتی یه دفترچه تلفن یا یک نرم افزار تو اکسل یا اکسس طراحی کنم چطوری خروجی بگیرم که معلوم نشه از اکسل یا اکسس فقط هنگام باز کردنش اطلاعات فلان بخواد نرم افزار اکسل یا کسس باز نشه تو ظاهر…ممنون میشم مشکلم رو حل کنین

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

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

با عرض ادب و احترام
آموزشهاتون هم کاربردیه هم خیلی روان
امیدوارم در راهی که در پیش گرفتید روز به روز موفق تر باشید
یا حق

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

سلام آقا ماهان گل ، بله کلا طراحی فرم ها برای افرادی است که کمی با وی بی ای آشنایی داشته باشند.
بنده در همان ابتدای پست اشاره کردم که مجموعه رایگان را یکبار مشاهده کنید و با دستورات اولیه وی بی ای آشنا شوید.
پست زیر یک مجموعه رایگان است که اول دستورات وی بی ای را به شما خواهد آموخت:
http://blog.excellearn.ir/%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87-%D8%B1%D8%A7%DB%8C%DA%AF%D8%A7%D9%86-%D9%85%D8%A7%DA%A9%D8%B1%D9%88%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AF%D8%B1-%D8%A7%DA%A9%D8%B3%D9%84/

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

سلام ممنون از آموزش شما.
مهندس من قسمت دوم برنامه رو نوشتم اما یک پیغام خطا میده و می گه باید object تعریف بشه.

سلام ارادت
جناب محسنی یک تصویر از خطا ارسال کنید.
تصویر را در سایت پیکوفایل آپلود کنید و لینکش را در قسمت نظرات ارسال کنید تا بنده بررسی کنم.

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

سلام
برای اینکار باید از ابزار MultiPage در یوزرفرم استفاده کنید.
قسمت ابزارها (همان جایی که Textbox نیز وجود داشت) یک ابزار تحت همین عنوان است که باید روی فرم قرار بدین.

ممنون.
می خوام وقتی فایل اکسل رو باز می کنم مثل نرم افزارهای مالی، فقط چند تا دکمه داشته باشه که با کلیلک روی اون ها ورود فرم ورود اطلاعات باز بشه و یا انواع گزارشات رو بتونم با بگیرم. الان این فرم ها رو که درست کردیم به چه صورت به دکمه button لینک کنم؟ چون از userform استفاده کردیم اسمش رو توی لیست مارکروها نمیاره؟

مهندس اگر کمک بفرمایید بسیار ممنون می شم.

سلام ارادتمندم
جناب محسنی عزیز متاسفانه پاسخ این نوع سوالات بصورت متنی دشوار است.
پیشنهاد میکنم مجموعه دفترچه تلفن را مشاهده کنید، این مجموعه در در سه فصل خیلی از نکات کاربردی ساخت نرم افزار را آموزش میدهد.
از آیکون گذاشتن برای باتن ها، لیست باکس و سایر را شامل می شود.
https://excellearn.ir/downloads/%d8%b7%d8%b1%d8%a7%d8%ad%db%8c-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%af%d9%81%d8%aa%d8%b1%da%86%d9%87-%d8%aa%d9%84%d9%81%d9%86-%d8%af%d8%b1-%d8%a7%da%a9%d8%b3%d9%84%d9%81%d8%b5%d9%84-2/

سلام و خسته نباشید
استاد تو کامپیوتر و لب تاپ من تو اکسل قسمت وی بی ای کاراکتر فارسی درج نمی کنه چی کار کنم ؟

سلام
وارد کنترل پنل شوید ، بخش Region .
سپس وارد تب Administrator شوید.
در ادامه با کلیک کردن برروی Change System locale اقدام به تغییر زبان به Persian کنید.
در پایان سیستم را ریستارت کنید، حل می شود.

سلام سید
خدا قوتتون بده
آقا من کد را وارد کردم اما موقع اجرا error 1004 میده. خطا هم مربوط به این قسمته
LastRow = Sheet۱.Cells(Rows.Count, ۱).End(xlUp).Offset(۱, ۰).Row
به نظرتون مشکلش چیه؟

سلام
آیا متغیری به نام Lastrow را تعریف کردین؟
Dim LastRow as integer

آقا سید مسعود
مشکل را متوجه شدم
به این صورت تغییرش دادم درست شد:
Private Sub CommandButton1_Click()
Dim LastRow As Long
With ActiveSheet
LastRow = .Cells(.Rows.Count, “A”).End(xlUp).Offset(1, 0).Row
End With
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
دست شما هم درد نکنه
آموزشتون خیلی خوب بود. استفاده کردم

جناب حسینی عزیز سلام
لطفا یه توضیح کامل راجع به اون قسمت که نوشتید
(1,rows.count)
بدید این عبارت یعنی چی
ممنون

سلام
ببینید دستور Cells یعنی سلول، از دو آرگومان هم تشکیل شده Cells(Shomare Radif , Shomare Soton)
اوکی ؟
یعنی برای اینکه به سلولی اشاره کنیم باید شماره ردیف و شماره ستونش رو داشته باشیم ، مثلا سلولی که در سطر شماره 1 و ستون شماره 2 قرار گرفته می شود سلول B1
حالا ما گفتیم شماره سطرش برابر با Rows.count یعنی به تعداد کل ردیف های اکسل باشد که می شود ردیف 1 میلیون و خورده ای
درحالیکه گفتیم ستون 1 یعنی ستون A
در اصل میخوایم از آخرین سلول ستون A به سمت بالا پرش کنیم (همان کار Ctrl + Up arrow key )

سلام
ممنون از آموزش خوبتون
اگه بخوایم اطلاعات که ثبت میشه به صورت table ثبت بشه چیکار کنیم
چون من وقتی تیبل درست میکنم اطلاعات ثبتی بعداز تیبل ذخیره میشه

سلام ارادت آقا مهدی عزیز
این تصویر را درنظر بگیرید (جدول)
http://s7.picofile.com/file/8390871018/Excellearn.JPG

این می شود کدهای درج داده
Sub Macro1()
Dim ws As Worksheet
Dim tbl As ListObject
Dim newrow As ListRow

Set ws = ActiveSheet
Set tbl = ws.ListObjects(“Table1”)

Set newrow = tbl.ListRows.Add

With newrow
.Range(1) = “Adam”
.Range(2) = “Smith”
.Range(3) = 25
End With

End Sub

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

سلام جناب مهندس عزيز
يه مشكلي تو ثبت اطلاعات دارم و اينكه هميشه اطلاعاتي كه در آخرين رديف ثبت ميشه در رديف اول هم نوشته ميشه ، يعني روي اطلاعات قبلي رديف اول ، علتش چي هست؟
اين كدي هست كه نوشتم
Private Sub CommandButton1_Click()
Dim LastRow As Long
LastRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Range(“A2”).Value = TextBox1.Text
Range(“B2”).Value = TextBox2.Text
Range(“C2”).Value = TextBox3.Text
Range(“d2”).Value = TextBox4.Text
Range(“A” & LastRow).Value = TextBox1.Text
Range(“B” & LastRow).Value = TextBox2.Text
Range(“C” & LastRow).Value = TextBox3.Text
Range(“d” & LastRow).Value = TextBox4.Text
TextBox1.Text = Empty
TextBox2.Text = Empty
TextBox3.Text = Empty
TextBox4.Text = Empty
End Sub

سلام ارادت
LastRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row+1
این رو جایگزین بفرمایید

مجددا سلام عرض شد. ببخشيد كه دوباره مزاحم مشيم جناب.
از پاسخگويي و راهنمايي تون خيلي خيلي ممنونم .
ولي با جايگزيني اون خط از كدها مشكل حل نشد و الان اطلاعات ، يك رديف در ميون ثبت ميشه و هنوز هم هرچي تو رديف آخر ثبت ميشه عينا در رديف اول هم مياد ولي رديف هاي مياني درست هست با اين تفاوت كه رديف ها يكي در ميون پر ميشن.

در دستوری که نوشتید عبارت offset را حذف کنید بنده دقت نکردم به این دستور
این دستور را حذف کنید و مجدد بررسی کنید

سيد بزگوار جناب آقاي حسيني عزيز
فرا رسيدن عيد سعيد غدير خم را خدمت حضرت عالي و خانواده معزز و محترمتان تبريك عرض مي كنم . اميد است بتوانيم روزي خدمات و زحمات جناب عالي را جبران كنيم.

سلام
جناب حسینی ،در خصوص اینکه می توان از اکسل در زمینه pm ( تعمیرات پیشگیرانه )استفاده کرد از جنابعالی سوال داشتم
ممنون مشم که راهنمایی بفرمایید

سلام ارادتمندم، بله امکان پذیر است. برای آلارم ها می توانید از کاندیشنال فرمتینگ استفاده کنیم و بحث تاریخ را می توانیم از میلادی کمک بگیریم. اکسل با شمسی مشکل دارد و نیاز به افزونه دارد. پیشنهادم استفاده از تاریخ های میلادی است تا فایل سنگین نشود.

سلام ممنون از مطالبتون . میخواستم به من کمک کنید در خصوص یه فیش حقوقی طراحی کردم . و قصد دارم ورود اطلاعاتم را توسط یوزر فرم انجام بدم . 2 تا سوال داشتم
1- میتوان شرط گذاشت اگه کد پرسنلی …. سال …. ماه ……
2- حالا بیا مثلا در خانه ……روز کاردکرد ….. و در خانه …..ساعت اضافه کار ……. قرار بده ؟
و بعد به همین ترتیب کد هر کدام در جای خودش قرار داد ؟
اگر بله
میتونید به بنده کمک کنید و یا اگر فیلم ـآموزشی در این خصوص دارید راهنمایی کنید
ممنون از مطالب مفیدتون

پاسخ دهید

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