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

اکسل می تواند محلی برای ذخیره اطلاعات و داده‌های سازمان شما باشد و البته در بسیاری از موارد برای ذخیره داده ها در یک شیت اکسل شاید ترجیح دهید که ابتدا اطلاعات توسط کاربر تایپ شود و سپس با زدن یک دکمه آن اطلاعات در یک شیت اکسل ذخیره شوند.

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

1- نحوه چیدمان دلخواه فرم

2- بررسی کردن اطلاعات توسط گزینه هایی مانند Data Validation

3- ثبت اطلاعات به صورت یک لیست (جدول) در اکسل برای گزارش گیری

اشتباه عمده کاربران اکسل در طراحی فرم

بسیاری از کاربران اکسل برای ساخت فرم "ورود اطلاعات" از user formها در VBA استفاده می کنند که به نظر نگارنده این انتخاب الزاما بهترین نیست و البته استفاده از یک شیت اکسل به مراتب می‌تواند گزینه بهتری باشد.

 

فرم user form excel vba

(یک نمونه فرم ساخته شده در محیط VBA اکسل)

 

استفاده از userform کار را به مراتب سخت و پیچیده می کند:

1- فرم های VBA به مراتب به کد نویسی بیشتری احتیاج دارند. مثلا برای ساخت یک کمبو باکس .

2- از دست دادن ده ها امکانات اکسل مانند فرمول نویسی اضافی / تست داده ها با توابع اکسل/ onditional formatting

بنابراین توصیه می شود که در صورتی که دلیل محکمی برای استفاده از userform های VBA اکسل ندارید، فرم خود را در اکسل بسازید.

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

ساخت فرم و لیست ورود داده ها در اکسل

فرض کنید که قرار است اطلاعت فرم بالا را در لیست زیر کپی کنید:

فرم user form excel vba

توجه : در فایل پیوست این مثال کاملا پیاده سازی شده است.

1- آنچه را که می خواهید کپی کنید ابتدا به صورتی ساده با فرمول نویسی در یک سطر در کنار هم بیاروید تا کار کپی آنها ساده شود.

2- محل سلول خالی در لیست مرجع را که قرار است اطلاعات را در آنجا کپی کنید، با فرمول COUNTA بیابید.

3- از کد VBA که در فایل پیوست مشاهده می کنید استفاده کنید تا اطلاعات را در شیت مرجع PASTEVALUE نمایید.

به روزرسانی مقاله (فرودین 97)

در کامنت‌ها بسیاری از کاربران سوال کرده بودند که چطور می‌توان فرم را پس از ورود اطلاعات خالی کرد . (یعنی مقادیر قبلی پاک شود)

برای اینکار کافی است که در انتهای کد، از متد ClearContents استفاده کنید که در فایل اکسل پیوست، این نکته اضافه شده است.


محافظت از داده‌های اصلی

یکی از مزایای ساخت فرم ورود اطلاعات در اکسل آن است که داده‌های اصلی (دیتابیس) ما توسط کاربر در دسترس نباشد و کاربر فقط بتواند ثبت را انجام دهد.

برای فهم این موضوع از یک مثال واقعی که در یکی از دوره‌های فرساران مطرح شد استفاده می‌کنم:

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

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

نکته: پسورد شیت دیتابیس اصلی ما (که نامش آن List است) را salam قرار داده شده است و باید در هنگام ذخیره کردن فایل این شیت را با این پسورد protect کنیم.

Sub Copy2List()

    Sheets("List").Unprotect "salam"

    x = Sheets("Form").Range("L1").Value

    Sheets("Form").Range("M1:S1").Copy
   
    Sheets("List").Cells(x, 1).PasteSpecial xlPasteValues
   
    Sheets("List").Protect "salam"
    
End Sub
 

شما هم تجربه یا دیدگاه خود را بنویسید:

محتوای این فیلد خصوصی است و به صورت عمومی نشان داده نخواهد شد.
  • تگ‌های HTML مجاز نیستند.
  • خطوط و پاراگراف‌ها بطور خودکار اعمال می‌شوند.
کد امنیتی
فرشید میدانی در تاریخ شنبه, 1397/05/27 - 01:05 نوشته:

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

m78167.3 در تاریخ یکشنبه, 1397/02/23 - 22:19 نوشته:

باسلام.ایا بین دوقسمت این جمله (PasteSpecial xlPasteValues)فاصله باید باشه؟
در مورد این جمله کمی توضیح میفرمایید

علیرض (تایید نشده) در تاریخ دوشنبه, 1397/01/20 - 22:13 نوشته:

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

علیرضافرزان (تایید نشده) در تاریخ چهارشنبه, 1397/01/01 - 13:33 نوشته:

سلام خدمت شما من هنگام اجرای کد بالا خطای ۱۴۰۰۱ در برنامه دارم میشه راهنمایی کنید

فرشید میدانی در تاریخ چهارشنبه, 1397/01/01 - 20:07 نوشته:

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