گاهی اوقات برنامه هایی با اکسل طراحی می کنیم که پردازش اطلاعات آن در چند مرحله انجام شده یا کمی زمانبر است. در این مواقع نمایش درصد پیشرفت کار انجام شده به کاربر جهت آگاهی از روند کار ضروری است. در اکسل نیز می توان همانند سایر نرم افزارها یک فرم “درحال بارگذاری… (…Loading)” که درصد پیشرفت کار را به کاربر نشان می دهد، ایجاد کرد. در اینجا یک روش ساده ارایه می شود که می توانید به راحتی در کارهایتان استفاده نمایید.
ساخت فرم درحال بارگذاری (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 رویداد Show_Progress اجرا می شود و این رویداد فرم درحال بارگذاری را نمایش می دهد. به محض نمایش فرم، رویداد UserForm_Activate اجرا و با دستور Call رویداد Your_Process اجرا می شود. در این رویداد نیز با هربار فرخوانی رویداد Update_Progress فرم در حال بارگذاری متناسب با روند کار بروزرسانی می گردد.
آخرین نظرات
مهدی on تغییر خودکار زبان کیبورد در اکسلعالی بود خیلی کارمون راه افتاد .ایشالا هر چی از خدا می خوای بهت بده
منصور on افزونه DoByColor: محاسبات براساس رنگ در اکسلسپاسگزارم فرض کنید در سلول A1 عبارت "دستگاه شماره" را داریم در سلول B1 عدد محاسبه شده "2343" در سلول
منصور on افزونه DoByColor: محاسبات براساس رنگ در اکسلسلام افزونه بسیار خوب و کار آمدی درست کرده اید اگر بتوان در این افزونه قابلیتی تعبیه کرد که بتوان
علیرضا on افزونه DoByColor: محاسبات براساس رنگ در اکسلسلام تو قسمت ifbycolor دو قسمت آخرش چطور باید بگیم که اگر با سلول مورد نظر همرنگ بود بیا اینکارو