خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


آموزش برنامه نویسی اکسل : خروج از حلقه

آموزش برنامه نویسی اکسل : خروج از حلقه
نویسنده : امیر انصاری
فرض کنید ماکرو شما نیاز دارد تا تشخیص دهد که اگر یک فایل اکسل خاص با نام Test.xlsx باز باشد، در این حالت باید آن را ببندد. شما ممکن است ماکرویی را با یک حلقه شبیه کد زیر بسازید:

سیستم یکپارچۀ سازمانی راهکار



Sub CloseOneWorkbook()
'Declare your object variable.
Dim wb As Workbook
'Open a For Each loop.
For Each wb In Workbooks
'Command(s) to be executed.
If wb.Name = "Test.xlsx" Then
wb.Save
wb.Close
End If
'Loop to the next iteration.
Next wb
End Sub

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

در مثال قبلی، حتی اگر فایل Test.xlsx در بین فایل های باز پیدا شود و سپس بسته شود، حلقه همچنان ادامه پیدا می کند و به ازاء تمامی فایلهای باز دیگر نیز این تکرار صورت می پذیرد. این به منزلۀ هدر دادن زمان و منابع سیستم می باشد. در عوض، شما می توانید با یک بیانیه Exit For فرآیند تکرار در حلقه را متوقف کنید. اساساً هر جای دیگر نیز نیاز داشتید تا حلقۀ شما ادامه پیدا نکند و مطمئن شدید که کار مربوطه صورت پذیرفته است می توانید با این مکانیزم اجرای بقیۀ تکرارهای حلقه را متوقف کنید و در زمان و منابع سیستم صرفه جویی نمایید.

تکمیل شده و بهینه شدۀ مثال بالا را در ادامه می بینید:

Sub CloseOneWorkbookFaster()
'Declare your object variable.
Dim wb As Workbook
For Each wb In Workbooks
'Command(s) to be executed.
If wb.Name = "Test.xlsx" Then
wb.Save
wb.Close
'Exit For statement to avoid needless iterations if the condition is met.
Exit For
End If
'Loop to the next iteration.
Next wb
End Sub


آموزش قبلی : آموزش برنامه نویسی اکسل : حلقه For…Each…Next

آموزش بعدی : آموزش برنامه نویسی اکسل : حلقه با گام معکوس (Looping In Reverse with Step)



نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.