قبلا در پستی انواع حلقه ها در vba را آموزش داده بودم اما برخی از کاربران پیام هایی در مورد حلقه های Do Loop فرستاده بودند و همچنین در بحث قبلی توضیحات در مورد این حلقه ها کافی نبود، به همین علت این حلقه ها را امروز به صورت تخصصی بحث میکنیم.
حلقه های Do در vba
حلقه های For یا For each همگی براساس بازه های مشخصی کار میکنند، یعنی ما محدوده بازه ای که حلقه برای آن باید تعریف شده باشد را به نوعی میدانیم، اما بعضی وقت ها این محدوده براساس پارامترهای یا شروط خاصی تعیین می شود، یا به نوعی برای محدوده حلقه شرط می گذاریم و دقیقا محدوده آن را نمیدانیم که در اینجا باید از حلقه های Do loop استفاده کنیم. که براساس نیاز به دو نوع حلقه تعریف می شوند :
حلقه Do While :
این حلقه در حالیکه یا تا زمانیکه شرط صحیح است ادامه میدهد، برای مثال به شخصی می گوییم روی این خطر قرمز حرکت کن و این شخص خط قرمز را تا زمانی که قرمز است ادامه می دهد، یا به عبارت دیگر در این شرط طول مسیر را به این برنامه مشخص میکنیم و میگوییم تا زمانی که این شرط برقرار است حلقه را ادامه بدهد و حلقه زمانی متوقف می شود که شرط ما False باشد.
برای مثال :
1 2 3 4 5 6 |
i = 1 Do While i < 10 Cells(i, 1).Value = "B68.ir" i = i + 1 Loop |
در مثال بالا یک متغیر به نام i تعریف کردیم که مفدارش را یک گذاشتیم و حلقه در هر بار شروع بررسی میکند که اگر مقدار متغیر ما کمتر از 10 باشد ادامه می هد، در غیر اینصورت برنامه از حلقه خارج می شود، یا به عبارتی دیگر تا زمانی ادامه می هد که مقدار i کمتر از 10 باشد.
- در حلقه بالایی اگر شرط نادرست باشد در همان ابتدا حلقه از مدار خارج می شود، اما اگر بخواهیم حلقه Do While حداقل یکبار بدون کنترل شرط یکبار اجرا گردد، میتوانیم شرط را به آخر برنامه بعد از loop انتقال دهیم، به مثال زیر توجه نمایید :
1 2 3 4 5 6 |
i = 1 Do Cells(i, 1).Value = "B68.ir" i = i + 1 Loop While i < 1 |
مشاهده میکنید که در شرط مقدار i را برابر یک گذاشتیم و اگر شرط در اول برنامه بود اجرا نمیشد و در همان اول از مدار خارج میشد اما در مثال بالایی شرط یکبار اجرا می شود و مقدار A1 را برابر”B68.ir” قرار میدهد.
حلقه Do Until :
این حلقه برعکس حلقه Do While می باشد، در این حلقه انتهای مسیر را تعریف میکنیم و طول مسیر مبهم است، یعنی حلقه تا زمانی ادامه یابد تا اینکه به شرط مورد نظر برسد یا به عبارتی اگر شرط ما صحیح نباشد ادامه بدهد و آنقدر ادامه دهد تا شرط مورد نظر ما False شود، اما در Do While در صورتی ادامه میدهد که شرط صحیح باشد.
برای مثال :
1 2 3 4 5 6 |
i = 1 Do Until i > 10 Cells(i, 1).Value = "B68.ir" i = i + 1 Loop |
در مثال بالایی یک متغیر به نام i تعریف کردیم و مقدارش را برابر یک گذاشتیم و حلقه ادامه می یابد تا اینکه i بزرگتر از ۱۰ بشود و حلقه متوقف می شود.
- در حلقه بالایی اگر شرط درست باشد در همان ابتدا حلقه از مدار خارج می شود، اما اگر بخواهیم حلقه Do Until حداقل یکبار بدون کنترل درست یا نادرست بودن شرط یکبار اجرا گردد، میتوانیم شرط را به آخر برنامه بعد از loop انتقال دهیم :
1 2 3 4 5 6 |
i = 1 Do Cells(i, 1).Value = 20 i = i + 1 Loop Until i < 10 |
همانطور که مشاهده میکنید اگر شرط را در ابتدای برنامه قرار دهیم حلقه در همان اول از مدار خارج می شود اما در این صورت حلقه بدون کنترل شرط حداقل یکبار اجرا می شود.
حلقه While Wend :
این حلقه همان حلقه Do while می باشد و مثال اولی را به این صورت نیز میتوانیم بنویسیم :
1 2 3 4 5 6 |
i = 1 While i < 10 Cells(i, 1).Value = "B68.ir" i = i + 1 Wend |
2 دیدگاه برای "حلقه Do While و Do Until در vba"