بدون حلقه سازی . برنامه ها بسیار خسته کننده و درد سر ساز خواهند شد . حلقه سازی اجازه می دهد تا در زمان برقرار بودن یک شرط یا رسیدن به یک مقدار مشخص یک مقدار مشخص یک بلوک کد اجرا شود . برای مثال فرض کنید که می خواهید اعداد 1 تا 3 را نمایش دهید و می توانید برنامه را به صورت زیر بنویسید .
کد PHP:
sub msg()
Msgbox "1"
msgbox"2"
msgbox"3"
end sub
این برنامه جواب می دهد اما کارآمد نیست و از کارآیی VBA نیز به خوبی استفاده نمی کند . اگر بخواهید اعداد بیشتری را به کمک این کد نمایش دهید مجبور خواهید بود کد طولانی تری بنویسید .مثلا اگر بخواهید اعداد 1 تا 100 را نمایش دهید باید 99 خط دیگر را به کد فوق اضافه کنید .!
حلقه For --- Next
با استفاده از دستور حلقه سازی For --- Next می توانیم کد فوق را ساده تر بنویسیم .
کد PHP:
sub msg 1()
for n= 1 To 5
MsgBox n
Next N
end sub
کادر پیفام 5 مرتبه ظاهر خواهد شد و مقادیر n را که از 1 تا 5 است . نشان می دهد .
متغیر به کارگرفته شده . هر چیزی می تواند باشد و هر چند که من از متغیر n استفاده کرده ام اما می توانید حتی از کلمه ای مثل num هم استفاده کنید با این که شرط که تا آخر حلقه بدون تغییر باقی بماند . نمی توانیم از دستور For n = 1 To 5 استفاده کنیم و سپس سعی کنیم تا از شاخصی مانند m استفاده کنیم بلکه باید حتما n را به کار ببریم. هم چنین نباید از یکی از کلمات کلیدی ذخیره شده VBA به عنوان متغیر استفاده کنیم . دستورات به کارگرفته شده در بین For و Next می توانند به هر تعدادی باشند و حتی می تواتیم در بین آنها . توابع و زیر روال ها را نیز فرا بخوانیم . مقادیر شروع و خاتمه در حلقه For ---- Next هم می توانند متفاوت باشند و اجباری نیست که حتما بین 1 شروع و با 5 خاتمه یابند .
گزینه Step کارآیی بیشتری را برای حلقه For --- Next ایجاد می کند . حتما متوجه شده اید که قرار نیست همیشه متغیر n در هر بار چرخش حلقه 1 واحد افزایش یابد .می توانید بااستفاده از گزینه Step گام حلقه را بالا ببرید . Step به ما اجازه می دهد تا اندازه افزایش و هم چنین جهت حرکت حلقه ( مثبت یا منفی ) را مشخص کنیم . به مثال زیر دقت کنید :
کد PHP:
sub msg2()
for n = 3 To 12 Step 3
msgBox n
Next n
end sub
خروجی کد زیر 3.6.9.12 خواهد بود چون گام حلقه 3 است .
برای این که ببینید Step چطور به صورت معکوس عمل می کند به مثال زیر دقت کنید :
کد PHP:
sub msg3()
For n = 10 TO 1 Step -1
MsgBox n
Next N
end sub
ّ
نتیجه کد فوق 1.2.3.4.5.6.7.8.9.10 خواهد بود .
حلقه های For --- Next برای خواندن اعداد ستونی یا اعداد ردیفی بسیار مناسب هستند . می توانیم برای افزایش خودکار شماره ردیف در یک آدرس سلول از حلقه For -- Next استفاده کنیم .
حلقه های For --- Next می توانند در داخل یکدیگر به صورت تو در تو نیز به کار گرفته شوند . برای مثال اگر بخواهیم به مقدار موجود در یک صفحه گسترده دست پیدا کنیم می توانیم از یک حلقه For -- Next برای رسیدن به ستون ها و از حلقه For -- Next دوم برای رسیدن به ردیف ها استفاده کنیم .
حلقه های For --- Next برای خواندن اعداد ستونی یا اعداد ردیفی بسیار مناسب هستند . می توانیم برای افزایش خودکار شماره ردیف در یک آدرس سلول از حلقه For -- Next استفاده کنیم .
حلقه های For --- Next می توانند در داخل یکدیگر به صورت تو در تو نیز به کار گرفته شوند . برای مثال اگر بخواهیم به مقدار موجود در یک صفحه گسترده دست پیدا کنیم می توانیم از یک حلقه For -- Next برای رسیدن به ستون ها و از حلقه For -- Next دوم برای رسیدن به ردیف ها استفاده کنیم .
مثال کاربردی : فرض کنید قصد دارید مقادیر 1 تا 5 را درسلول های A1:A5 قرار دهید .
کد PHP:
sub msg4()
Dim i as integer
For i = 1 to 5
Cells(i,1)=i
Next
end sub
کامنت