سبد خرید 0

وبلاگ

فرم ورود اطلاعات در اکسل و روش طراحی سریع آن

فرم ورود اطلاعات در اکسل

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

روش های ساخت فرم ورود اطلاعات در اکسل:

  1. استفاده از Form اختصاصی اکسل: برای ثبت اطلاعات، اکسل یک فرم رابط درنظر گرفته است که نام فیلدهای ثبت اطلاعات کاملا به هدر ثبت شده در شیت اکسل بستگی دارد.
  2. طراحی Form با استفاده از VBA : در این روش که نیاز به دانش اکسلی و زبان برنامه نویسی VBA دارد، شما می توانید فرم های شخصی سازی شده و حرفه ای برای ورود اطلاعات طراحی کنید.

خب…! حالا کدوم روش بهتره…؟

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

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

اگر می خواهید آموزش VBA را شروع کنید می توانید در دوره رایگان آموزش تصویری VBA شرکت کنید.

مراحل ساخت فرم ورود اطلاعات:

فرض کنید می خواهیم اطلاعات مربوط به کالاها شامل نام کالا، قیمت خرید، قیمت فروش و واحد شمارش کالا را در اکسل ثبت کنیم.ابتدا لازم است تا یک جدولی برای ثبت اطلاعات خود با هدر های گفته شده طراحی کنیم تا بتوان اطلاعات را داخل این فرم ثبت و ذخیره کرد (مطابق شکل 1).

ساخت جدول اطلاعات در اکسل برای user form
شکل شماره 1 – ایجاد جدول اطلاعات کالا

روش اول:

برای اینکه بتوانیم از فرم اختصاصی اکسل استفاده کنیم لازم است ابتدا ابزار فرم رو در قسمت Quick Access اضافه کنیم.برای اینکار مسیر زیر رو بروید تا پنجره Excel Options بازشود:

حتما بخوانید:   Pivot Table (پیوت تیبل) معجزه اکسل برای گزارش گیری

File > Options

مطابق شکل شماره 2 در پنجره باز شده می توانید از قسمت Quick Access Toolbar ابزار فرم را به سایر ابزارهای خود اضافه کنید.

فعال کردن ابزار Form در اکسل
شکل شماره 2 – افزودن ابزار Form اطلاعات به Quick Access Toolbar در اکسل

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

همچنین برای فراخوانی فرم می توانید از کلید میانبر Alt+D+OO استفاده کرد

اجرای فرم ورود داده
شکل شماره 3 – افزوده شدن ابزار Form به Quick Access

نکات قبل از فراخوانی Form:

  • حتما محدوده جدول شما مشخص و ستون ها دارای هدر(عنوان ستون) باشند.
  • قبل از فراخوانی فرم حتما محدوده جدول یا یکی از سلول های محدوده انتخاب شود تا با خطا مواجه نشوید.
  • برای جلوگیری از برخی خطاها می توانید محدوده خود را به Table تبدیل کنید.

توجه:

با ثبت نام رایگان در سایت می توانید صفر تا 100 ابزار پیشرفته Table رو بصورت تصویری مشاهده کنید.
ثبت داده با فرم ورود داده در اکسل
شکل شماره 4 – Form ثبت اطلاعات در لیست
  1. NEW: با زدن این گزینه اطلاعات وارد شده ثبت و باکس ها برای ثبت کالای جدید خالی می شود.
  2. Delete: رکورد جاری را از لیست کالاهای شیت حذف می کند.
  3. Restore: فقط باکس های فرم را برای ثبت کالای جدید پاک می کند.
  4. Find Prev: اطلاعات ثبت شده ی قبلی را نمایش می دهد.
  5. Find Next: اطلاعات ثبت شده ی بعدی را نمایش می دهد.
  6. Criteria: برای جست و جو بین اطلاعات ثبت شده براساس یک آیتم خاص.
    مثلا می خواهیم تمام کالاهایی که قیمت خریدشان 135.000 ریال می باشد را ببینیم.برای اینکار در باکس “قیمت خرید” مبلغ را وارد می کنیم و با استفاده از گزینه های Find Prev و Find Next می توان کالاهایی که این قیمت خرید را دارند را مشاهده کرد.
حتما بخوانید:   ابزار Text to Columns در اکسل برای جداسازی متن داخل سلول

آموزش ویدئویی این روش:

روش دوم:

برای طراحی فرم ورود اطلاعات (User Form) از طریق VBA ابتدا کلید ترکیبی Alt+F11 رو بزنید تا وارد محیط برنامه نویسی VBA شوید.در پنجره باز شده از قسمت منوها گزینه ی Insert را بزنید و از لیست باز شده User Form را انتخاب کنید تا یک یوزرفرم ایجاد شود.

ساخت فرم ورود اطلاعات با User Form
شکل شماره 5 – ساخت فرم User Form در VBA

پنجره ToolBox:

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

آبجکت هایی که ما برای پروژه خودمان نیاز داریم:

  1. TextBox: با استفاده از این آبجکت می توان اطلاعات را از کاربر دریافت و در شیت اکسل ثبت کرد.
  2. Label: با این آبجکت می توان یک متن توضیحی در User Form ها ایجاد کرد.
  3. CommandButton: با این آبجکت می توان یک دکمه ثبت داده برای فرم خودمان ایجاد کنیم.

نکته:

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



اکنون کد زیر را کپی کنید:

حتما بخوانید:   آموزش کار با ComboBox در VBA و نحوه لیست کردن اطلاعات

سپس روی دکمه “ثبت” کلیک راست کرده و گزینه View Code را انتخاب تا وارد محیط برنامه نویسی شوید.

اکنون بدون هیچ کلیک اضافه ای کلید Ctrl+V را بزنید تا کدها Paste شود.

توضیح کدها:

  • خط اول: ما اینجا یک متغیر به نام last_row ایجاد کردیم تا شماره ردیف آخرین سلول خالی را داخل آن ذخیره کنیم
  • خط دوم: اینجا با استفاده از تابع End(xlUp).Row شماره ردیف آخرین سلول پر در ستون A را بدست آوردیم و به اضافه عدد 1 کردیم تا شماره ردیف آخرین سلول خالی مشخص شود سپس مقدار بدست آمده را در داخل متغیر last_row ذخیره کردیم.
  • خط سوم به بعد: اینجا با استفاده از تابع Cells می گوییم که مقدار سلولی که مثلا شماره سطرش last_row و شماره ستونش 1 می باشد برابر است با مقداری که داخل TextBox1.Text ذخیره شده است.

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

اگر هم می خواهید User Form های حرفه ای تحت VBA طراحی کنید می توانید با ثبت نام در سایت بصورت کاملا رایگان در دوره های آموزش تصویری برنامه نویسی VBA شرکت کنید.


دانلود فایل آموزش

جهت دریافت فایل آموزش کلیک کنید…[/su_button


منبع: support.office

اشتراک گذاری:

مطالب زیر را حتما مطالعه کنید

56 دیدگاه

به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

  • سلام چطوری میشه در اکسل یک سلول رو انتخاب کرد ولی موقع نوشتن سلول دیگری پر شود یعنی در واقع با انتخاب یک سلول ، سلول دیگری انتخاب شه

    • سلام.

      برای اینکار باید کدنویسی بشه.شما هم دقیق توضیح ندادید که با انتخاب چه سلولی، کدام سلول انتخاب بشه و موقعیت نسبی آنرا هم مشخص نکردید.

  • سلام
    با انتخاب یک سلول، سلول روبروی اون انتخاب بشه مثلا با انتخاب سلول A1 سلول B1 انتخاب بشه

    • فرض کنید می خواهیم زمانی که کاربر یکی از سلول های محدوده A1:A10 رو انتخاب کرد، بلافاصله سلول مجاور آن در ستون B انتخاب شود.مثلا اگر کاربر روی سلول A6 کلیک کرد بلافاصله سلول B6 انتخاب شود.

      از کد زیر استفاده کنید:

      If Not Intersect(Range(“A1:A10”), ActiveCell) Is Nothing Then
      ActiveCell.Offset(0, 1).Select
      End If

  • با سلام، زمانی که یک ردیف از table را از طریق تابع row()-1 به صورت Autonumber تعریف میکنیم علیرغم تعریف درست این شمارنده خودکار دیگر از طریق فرم خودکار اکسل نمیتوان ردیف اضافه کرد و پیغام can not extend table or database را میدهد. لطفا راهنمایی بفرمایید که چگونه میتوان این مشکل را حل کرد. با تشکر

  • سلام خسته نباشین .
    میخواستم یه سری داده رو داخل اکسل ذخیره کنم با ارقام مشخص اون داده .چیکار باید بکنم .
    مثلا ali=40خب .میخام وقتی تو سلول نوشتم aliبعد از اینتر عدد ۴۰ رو نشون بده .چیکار باید بکنم

  • سلام و خسته نباشید
    میخواستم ببینم دکمه ثبت رو میشه در ورد ایجاد کرد که با زدن دکمه ثبت اون سند در درایو e:\ ذخیره بشه و دوباره با زدن اون دکمه در همون درایو جایگزین نشه

    • سلام. وقت بخیر

      بله، میشود.

      برای قسمت اول سوالتون که با ضبط ماکرو براحتی قابل انجام هست ولی برای قسمت دوم باید کد نویسی بشه.

  • سلام، وقت بخیر
    زمانیکه فایل اکسلی که شامل یک فرم ورود اطلاعات هست، را بخواهیم در گوشی موبایل باز کنیم چه کار باید کرد؟
    روی سلول “ورود اطلاعات” که شامل یک فرم ورود هست، وقتی میزنم در گوشی، به حالت ویرایشی در میاد.
    ممنون

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

    • سلام. وقت بخیر

      دقیق متوجه منظورتان نشدم. اما اگر می خواهید بعد از ثبت اطلاعات TextBox ها خالی شوند می توانید نمونه کد زیر رو به انتهای کدتون اضافه کنید:


      ""=(Sheets("kala").Cells(last_row, 1

  • سلام وعرض ادب
    با آموزش های مفیدتون یوزر فرم درست کردم واطلاعات در اکسل سیو میشه.
    فقط بفرمایید من نمیتونم این یوزر فرم رو جدا سیو کنم؟ جدای از ایکسپورت کردن از منوی فایل، زمان اجرا حتما باید تو محیط وی بی بالا بیاد.؟؟
    منظورم همون دکمه alt+ f11 .؟؟؟؟
    اکسل هم میبندم باز میکنم یوزر فرم رو لود نمیکنه.
    یه راهنمایی میفرمایید.؟
    اگر هم تو سایت ذکر کردین لینک اون مطلب رو محبت کنید.
    متشکرم

    • سلام. وقت بخیر

      دقیق منظورتون رو متوجه نشدم.شما باید فایلتون رو با فرمت xlsm (ماکرو) ذخیره کنید تا فرم و کدهاتون پاک نشه.

      درمورد نمایش فرم هم میتونید از نمونه کد زیر استفاده کنید.

      Userform1.show

      که در کد بالا Userform1 نام فرم شما هست و میتونه هر نامی داشته باشه. مثلا : MyForm.Show

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

      • با سلام جناب جاوید مختاری
        {بنده میخواستم در فایل اکسل یک شیت ایجاد کنم که مشخصات محصولات اعم از کد محصول و قیمتش درج شده
        و در شیت بعدی با وارد کردن کد محصول در سلول ، قیمت آن در سلول مجاورش یا سلول دیگه ای بصورت خودکار وارد بشه}
        با توجه به راهنمایی حضرتعالی از تابع VLOOKUP استفاده کردم و فرمولش رو درست کردم (=VLOOKUP(E:E;محصول!A:F;6;FALSE) – که به خوبی کار کرد.
        الان مشکل اینجاست که اگر سلول کد محصول خالی بمونه (E) در سلول محصول N/A# این متن رو نمایش و این باعث میشه توی سلول جمع کل هم مشکل ایجاد بشه چطوری میتونم فرمول بالا رو شرطی کنم که اگر در ستون یا سلول (E) چیزی ننوستم در سلول محصول عدد 0 درج بشه تا در سلول مبلغ کل خطا ایجاد نشه
        با تشکر فراوان از سایت خوبتون

  • سلام
    اگه بخواهیم دو تا کالا پشت سر هم ثبت بشه ینی دو ردیف پشت سر هم باشن دستورش چیه؟

    • سلام. وقت بخیر

      برای ثبت کالای جدید اصولا دونه دونه ثبت می کنن.مگر اینکه داخل فرم برای هر کالا یک باکس جداگانه درست کنید.

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

        • خب برای ثبت دو کالا در دو ردیف بلاخره باید این دو کالا جایی وارد بشه تا ثبت بشه.

          شایدم منظور شما چیز دیگریست ولی درست بیان نمی کنید.

  • مثلا
    1- کالای 1 ساخت ایران 3240000
    2-کالای 1 ساخت چین 2500000
    عینا مثل فرم پیوستی هست ولی میخوام با یک باتن دو ردیف ثبت بشه

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

      مثلا :

      Range(“A1”)=TextBox1

      Range(“A2”)=TextBox2

  • سلام من توی جدول گروه دارم. آیا میشه در فرم گروه ها به صورت کرکره ای انتخاب بشه.

    • سلام. وقت بخیر

      متوجه منظورتان از “گروه” نشدم. لطفا سوالتان را کمی بیشتر توضیح بدین

  • سلام من میخوام اطلاعات وارد یک جدول در شیت بشه ولی متاسفانه با این کدها فقط روی خود فضای شیت مینویسه میشه بگین کجای کد رو تغییر بدم که بره توی سطر جدولم بنویسه؟؟؟

    • سلام. وقت بخیر

      متاسفانه متوجه منظورتان نشدم.

      خب کدهای نوشته شده اطلاعات شمارو در شیت kala به ادامه اطلاعات اضافه می کنه.

      • بله شیت کالا درسته ولی توی table موجود توی اون شیت نمیذاره مقادیر رو از پایین جدول شروع میکنه به نوشتن من یک جدول دارم مثلا به اسم data میخوام مقادیر توی اون وارد بشه وخودکار بره سطر بعدی

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

          • ردیف های خالی رو پاک کنید.
            اگر محدوده شما تیبل باشه خود تیبل داینامیک محدوده خودش رو افزایش میده.

  • سلام . ممنون از اموزش هایتان . میخواستم ببینم چگونه یک user form با بالا امدن اکسل به صورت اتوماتبالا بیاید و نیازی به باز کردن محیط vba و اجرای آن نباشد . در ضمن ایا میتوان با گذاشتن یک button در صفحه نیز این کار را انجام داد . ممنون

  • با سلام . اگر بخوام با یک عدد را به 10 تا textbox بدهم میتونم این کاررو با حلقه for انجام بدهم یا خیر ؟ مثل زیر
    for j=1 to 10
    textboxj=10
    next j

  • با سلام. خیلیاز راهنماییتون ممنونم ولی خود حلقه for رواخطار میده .
    ‘pak kardan dadeha

    Private Sub delete_Click()
    For j = 1 To 10
    logsheet1.Controls(“Textbox” & j) = 10
    Next j
    End Sub
    در واقع من حدود 30 تا text box دارم که میخوام چند تا موضوع رو براش انجام بده . مثلا با شرط if ببینه اگر حتی یکی از خونه ها خالی هست یک msgbox بده و یا با زدن دکمه delet همه خونه ها رو یه جاپاک کنه . برنامه کامله و کار میکنه اما چون بلد نبودم مجبور بودم برای تک تک textbox ها شرط رو بنویسم . حالا میخوام به جای این که همشون رو بنویسم همه رو در یه حلقه یا با یک کد انجام بدم . مثلا در شرط if چجوری بگم اگر یه خونه خالی بود پیام بده . من به این صورت نوشتم :
    ElseIf TextBox1 = “” Or TextBox2 = “” Or TextBox3 = “” Or TextBox4 ……. = “” Then
    این کار حجم برنامه رو خیلی برده بالا و غیر حرفه ای هست .
    یا مثلا برای clear کردن text box ها یکی یکی اونها رو به صورت زیر انجام دادم
    Private Sub delete_Click()
    TextBox1 = Clear
    TextBox2 = Clear
    .
    .
    .
    End Sub
    تا 30 عدد text box
    حالا میخوام برنامه رو خلاصه تر کنم و با یه کد یا حلقه این کارو انجام بدم ولی فراخوانی همزمان text box ها رو بلد نیستم .
    ممنون میشم راهنماییم کنید .

    • نام تکست باکس های شما باید بصورت TextBox… , TextBox4 , TextBox3 , TextBox2 , TextBox1 باشد تا شناسایی اسم دچار مشکل نشود

  • سلام چرا وقتی فرم مورد نظر و ساختم و با ماکرو کلید برای باز کردن فرم هم ساختم ولی بعد اینکه اکسل و میبندم و دوباره باز میکنم و کلید مورد نظرو میزنم فرم بالا نمیاد چیکار کنم؟

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

  • باسلام من یک بانک اطلاعاتی دارم و در یک شیت با استفادهاز تابع indexوmatchفراخوان یکسریاطلاعات را ازشیت 1 دادم حال می خواهم هر اطلاعاتی که ازشیت یک فراخوانی کنم در شیت یک رنگی شود وبعد از فزراخوان اطلاعات دیگر فیلد انتخاب شده قبلی رنگ انتغییر نکند وبه همین ترتیب هرچه اطلاعات فراخوانی کنم در شیت یک رنگی بماند

  • سلام وعرض ادب واحترام:
    اگر امکانش هست این دستور vbaرا برام بذارین خیلی ممنون میشم تشکر

  • سلام
    میخواستم یک نمودار داینامیک که اطلاعات در ان سطری وارد شده اند نه ستونی را رسم کنیم اما نحوه وارد کردن کد ان را در name manager بلد نیستم ممنون میشم کمکم کنید .
    همچنین چجوری میشه دستور داد که یک نمودار را از طریق vba نمایش داده بشود یا نشود ؟

  • با سلام در خصوص سوال قبل به عنوان ده تا نمدار جدا داریم که میخوایم با یک userform از بین اونها نمودار مورد نظر رو انتخاب کرده و نمایش بده و بعد هم نمدار رو ببنده
    ممنون

  • سلام . میخاستم بدونم چجوری میشه با استفاده از vba نمایش نمودارها رو مدیریت کرد مثلا یک user form بسازیم و در اون ده مودار رو قرار بدیم و با انتخاب هر کدام از انها نمودار نمایش داده شود .
    برای داینامیک کردن نمودار اگر دادها به صورت افق وارد شده باشند مثلا داده ها به ترتیب در a1 ,b1و …. باید چجوری کدنویسی کنیم و ایا داینامک کردن نمدار رو هم میشه در vba انجام داد ؟
    ممنون

    • سلام. وقت بخیر

      در خود VBA یک آبجکت برای نمایش Chart ها وجود داره که میتونید ازش استفاده کنید.

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

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

    • و اینکه فرمم ورد هست، اگر میتونم همینطور لینکش بدم که عالیه، اگر که نه فرمم رو در اکسل وارد میکنم. ممنونم

    • سلام. وقت بخیر

      شما عنوان های فرمتون رو هم بصورت انگلیسی و بصورت فارسی در یک شیت جداگانه ثبت کنید.

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

دیدگاهتان را بنویسید