تبلیغات
آموزش برنامه نویسی و حسابداری در اکسل - نحوه استفاده از حلقه ها در VBA
نحوه استفاده از حلقه ها در VBA
نوشته شده توسط محسن در ساعت 11:15 ق.ظ

حلقه سازی

بدون حلقه سازی . برنامه ها بسیار خسته کننده و درد سر ساز خواهند شد . حلقه سازی اجازه می دهد تا در زمان برقرار بودن یک شرط یا رسیدن به یک مقدار مشخص یک مقدار مشخص یک بلوک کد اجرا شود . برای مثال فرض کنید که می خواهید اعداد  1 تا 5 را نمایش دهید و می توانید برنامه را به صورت زیر بنویسید.

  • MsgBox "1"
  • MsgBox "2"
  • MsgBox "3"
  • MsgBox "4"
  • MsgBox "5"

این برنامه جواب می دهد اما کارآمد نیست و از کارآیی VBA نیز به خوبی استفاده نمی کند . اگر بخواهید اعداد بیشتری را به کمک این کد نمایش دهید مجبور خواهید بود کد طولانی تری بنویسید .مثلا اگر بخواهید اعداد 1 تا 100 را نمایش دهید باید 995 خط دیگر را به کد فوق اضافه کنید .!


حلقه  For --- Next

با استفاده از دستور حلقه سازی For --- Next می توانیم کد فوق را ساده تر بنویسیم .

for n= 1 To 5 
MsgBox n
Next N

کادر پیفام 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 به ما اجازه می دهد تا اندازه افزایش و هم چنین جهت حرکت حلقه ( مثبت یا منفی ) را مشخص کنیم . به مثال زیر دقت کنید :

 for n = 3 To 12 Step 3 
msgBox n 
Next n

خروجی کد زیر 3.6.9.12 خواهد بود چون گام حلقه 3 است .
برای این که ببینید Step چطور به صورت معکوس عمل می کند به مثال زیر دقت کنید :

ّFor n = 10 TO 1 Step -1
MsgBox n
Next N

نتیجه کد فوق 1.2.3.4.5.6.7.8.9.10 خواهد بود .
حلقه های For --- Next برای خواندن اعداد ستونی یا اعداد ردیفی بسیار مناسب هستند . می توانیم برای افزایش خودکار شماره ردیف در یک آدرس سلول از حلقه For -- Next استفاده کنیم .
حلقه های For --- Next می توانند در داخل یکدیگر به صورت تو در تو نیز به کار گرفته شوند . برای مثال اگر بخواهیم به مقدار موجود در یک صفحه گسترده دست پیدا کنیم می توانیم از یک حلقه  For -- Next برای رسیدن به ستون ها و از حلقه For -- Next دوم برای رسیدن به ردیف ها استفاده کنیم .

مثال کاربردی : فرض کنید قصد دارید مقادیر 1 تا 5  را درسلول های A1:A5 قرار دهید .

Dim i as integer
For i = 1 to 5 
Cells(i,1)=i
Next

حلقه For Each

حلقه For Each بسیار شبیه حلقه For -- Next است و تنها تفاوت آن ها در این است که این حلقه روی مجموعه ها یا آرایه ها عمل می کند . و به شما کمک می کند هر کدام از اعضا مجموعه را به صورت تک تک مرور کنید . در این حلقه از شاخص ( مثل n  در مثال قبلی ) استفاده نمی کنیم. چون خودش به صورت خودکار تمام اجزا مجموعه را مرور می کند .این حلقه زمانی سودمند است که بخواهیم در یک مجموعه به دنبال مورد خاصی بگردیم و سپس آن را از مجموعه حذف کنیم . چون موقعیت حلقه در مجموعه . پس از حذف . بدون تغییر باقی می ماند . اما اگر در حلقه For --- Next که شاخص دارد استفاده کنید و یک شی را حذف کنید . شاخص . یک واحد افزایش می یابد . حلقه در چرخه ای بی پایان گرفتار می شود و پیغام خطا صادر می شود .

Dim cell as Range
Range("A1:A10").select
For Each Cell in selection
cell.value=12
Next

کد بالا با استفاده از حلقه For -- Each مقدار عددی 12 را در سلول های A1 تا A10 وارد می کند.


»
 
 

قالب وبلاگ

هاست لینوكس

مرجع راهنمای وبلاگ نویسان

سفارش طراحی اختصاصی قالب وب سایت و قالب وبلاگ

طراحی وب

شارژ ایرانسل

فال حافظ