ساخت فرم درحال بارگذاری (Loading) در اکسل

12
بدون دیدگاه
فرم بارگذاری ..

گاهی اوقات برنامه هایی با اکسل طراحی می کنیم که پردازش اطلاعات آن در چند مرحله انجام شده یا کمی زمانبر است. در این مواقع نمایش درصد پیشرفت کار انجام شده به کاربر جهت آگاهی از روند کار ضروری است. در اکسل نیز می توان همانند سایر نرم افزارها یک فرم “درحال بارگذاری… (…Loading)” که درصد پیشرفت کار را به کاربر نشان می دهد، ایجاد کرد. در اینجا یک روش ساده  ارایه می شود که می توانید به راحتی در کارهایتان استفاده نمایید.

ساخت فرم (Form) درحال بارگذاری… (…Loading)

جهت ساخت فرم درحال بارگذاری… (…Loading) از کدنویسی استفاده می شود. برای اینکار فایل اکسل خود را باز کنید و با استفاده از کلیدهای ترکیبی Alt +F11 وارد محیط VBA شوید. حال همانند تصویر ذیل از کادر Project در سمت چپ، بر روی نام فایل خود کلیک راست کرده و از منوی Insert یک یوزر فرم (UserForm) و ماژول (Modoule) جدید ایجاد نمایید.

ایجاد یوزر فرم و ماژول - فرم در حال بارگذاری

بر روی یوزرفرم ایجاد شده دوبار کلیک کنید و همانند تصویر ذیل از کادر Properties مقادیر لازم را تعیین نمایید :

  • (Name) :برابر UF_Progress  (در زمان کد نویسی با استفاده از این نام به یوزرفرم ارجاع داده می شود)
  • Caption : برابر Sheet1.ir (عبارتی که در این قسمت وارد می کنید در بالای فرم نشان داده می شود)
  • Height :  برابر 87
  • Width : برابر 210
ویرایش یوزرفرم - فرم درحال بارگذاری

حال بر روی فرم کلیک کنید تا پنجره Toolbox نشان داده شود. همانند تصویر ابزار فریم (Frame) را انتخاب و بر روی فرم بکشید و در کادر Properties مقادیر ذیل را تعیین کنید:

  • (Name) : Fr_Progress
  • BackColor : سفید یا هر رنگ دلخواه
  • Caption : بدون مقدار
  • Height : برابر 26
  • Left : برابر 6
  • Top : برابر 30
  • Width : برابر 192
اضافه کردن ابزار فریم به فرم در حال بارگذاری

دوباره همانند تصویر ذیل ابزار لیبل (Label) را از پنجره Toolbox انتخاب و بر روی فرم و داخل ابزار فریم که قبلا ایجاد کردید، بکشید و در کادر Properties آن مقادیر ذیل را تعیین کنید:

  • (Name) : lbl_Progress
  • BackColor : سبز یا هر رنگ دلخواه
  • Caption : بدون مقدار
  • Height : برابر 13
  • Left : برابر 6
  • Top : برابر 5
  • Width : برابر 80

یک لیبل دیگر بر روی فرم و در بالای فریم قرار دهید و عبارت “درحال بارگذاری …. ” یا هر عبارت دیگری را در Caption آن وارد کنید.

اضافه کردن لیبل به فرم در حال بارگذاری...

کار طراحی ظاهر فرم درحال بارگذاری… به پایان رسید. در ادامه با نحوه کدنویسی آن آشنا می شویم.

کد نویسی فرم (Form) درحال بارگذاری… (…Loading)

از کادر Project بر روی ماژولی (Modules) که ایجاد کرده اید دوبار کلیک کنید تا محیط کدنویسی آن باز شود. سپس کدهای ذیل را در این قسمت کپی نمایید:

Option Explicit
'======================== Sheet1.ir ================================
Sub Your_Process()
    Dim i As Integer
    For i = 1 To 1500
        '
        'کدهاي شما در اينجا قرار دارد
        '
        Update_Progress (i / 1500)
        ' 
    Next i
End Sub
'======================== Sheet1.ir ================================
Sub Update_Progress(Percent)
    With UF_Progress
         '
         .lbl_Progress.Caption = Format(Percent, "0.00%")
         .lbl_Progress.Width = Percent * (.Fr_Progress.Width - 10)
         If Percent < 0.3 Then .lbl_Progress.BackColor = RGB(250, 0, 0)
         If Percent >= 0.3 And Percent <= 0.7 Then .lbl_Progress.BackColor = RGB(0, 0, 250)
         If Percent > 0.7 Then .lbl_Progress.BackColor = RGB(0, 250, 0)
         .Repaint
      End With
End Sub

در رویداد Your_Process کدهای شما که مربوط به پردازش کارتان است قرار می گیرد. در اینجا جهت آزمایش فرم، تنها از یک حلقه For استفاده شده است. رویداد Update_Progress نیز مربوط به بروزرسانی فرم درحال بارگذاری متناسب با میزان پیشرفت کار است. دقت کنید که در هر حلقه For رویداد Update_Progress فراخوانی شده و به دنبال آن فرم بارگذاری، میزان پیشرفت پردازش را نشان می دهد.

کد های فرم

برای اینکه فرم درحال بارگذاری به درستی نمایش داده شود باید ابتدا فرم اجرا شده سپس کدهای شما (همان رویداد Your_Process) فراخوانی شود. برای این کار در کادر Project برروی نام یوزرفرم کلیک راست کرده و گزینه View Code را انتخاب کنید تا ناحیه کدنویسی مربوط به آن باز شود. سپس کدهای ذیل را در این قسمت کپی نمایید.

Private Sub UserForm_Activate()
    Call Your_Process
    Unload Me
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = 0 Then Cancel = True
End Sub

به محض نمایش فرم درحال بارگذاری…، رویداد UserForm_Activate اجرا می گردد. در این رویداد با استفاده از دستور Call رویداد Your_Process فراخوانی می شود و پس از اتمام پردازش با دستور Unload Me فرم بسته می شود. رویداد UserForm_QueryClose نیز برای جلوگیری از بستن فرم توسط کاربر است. در واقع این کد دکمه ضربدر (بستن) بالای فرم ها را غیر فعال می کند.

کار ساخت فرم درحال بارگذاری.. تمام شده و تنها نیاز به فراخوانی آن است. برای اینکار کد ذیل را به انتهای ماژول اضافه کنید:

Sub Show_Progress()
    UF_Progress.Show
End Sub

به محیط اکسل بازگردید و یک Shape ایجاد کرده و همانند تصویر ذیل بروی آن کلیک راست کرده و گزینه Assign Macro را انتخاب و در کادر باز شده رویداد Show_Progress را انتخاب کنید.

الصاق ماکرو به Shape

حال بر روی Shape که ایجاد کرده اید کلیک کنید تا نتیجه کار را ببینید (ویدیو ذیل). روال کار به این صورت است که با کلیک بر روی Shape  رویداد Show_Progress اجرا می شود و این رویداد فرم درحال بارگذاری را نمایش می دهد. به محض نمایش فرم، رویداد UserForm_Activate اجرا و با دستور Call رویداد Your_Process اجرا می شود. در این رویداد نیز با هربار فرخوانی رویداد Update_Progress فرم در حال بارگذاری متناسب با روند کار بروزرسانی می گردد.

4.5 2 رای ها
امتیاز شما به این مطلب
guest
0 نظر / سوال
بازخورد (Feedback) های اینلاین
مشاهده تمامی نظرات
فهرست
0
خوشحال می شویم نظر شما را در مورد این مطلب بدانیمx