جهت انجام کارهای تکراری از حلقه ها استفاده می شود. در ابتدا با حلقه های Forشروع می کنیم .
ساختار کلی این حلقه به شکل زیر ا ست:
For counter= start To end [Step step]
دستورات
Next [conter]
مثال : برنامه ای می نویسیم که سلولهای ناحیه A1 تا A10 را به صورت یکی درمیان پر نماید:
جهت نیل به این هدف از فرمول زیر استفاده می شود:
For i=1 to 10 step 2
Cells(1,i)=i
Next i
به همین ترتیب و با استفاده از تکنیک step در حلقه ها می توان از اعداد زوج با step 2 و اعدادفرد با step یک یا سه بهره جست.
حلقه های تو در تو
با استفاده از چندین حلقه for می توان امور تکراری پیچیده تر و بیشتری را انجام داد.
در مثال زیر تلاش ما بر این است که یک جدول ضرب 10*10 در محیط اکسل ایجاد نماییم.
برای رسیدن به این منظور به راحتی و با استفاده از 2 حلقه می توان این برنامه را به شکل زیر نوشت:
Sub ZARB()
For i = 1 To 10
For J = 1 To 10
Cells(i, J) = i * J
Next J
Next i
End Sub
استفاده از ساختارهای شرطی در حلقه ها
حال می خواهیم که در همین جدول مضارب 5 را با تغییر فونت مشخص نماید:
برای این منظور باید بعد از سطر چهارم برنامه خط زیر را نوشت:
If i = 5 Or j = 5 Or i=10 or j = 10 Then
Cells(i, j).Font.Size = 25
End If
می توان در برنامه موجود کار پیغامی مبنی بر اینکه آیا مایل به ذخیره نمودن برنامه هستید یا خیر، پس از if برنامه ایجاد نمود.
برخی کاربردهای حلقه For
شمارنده(COUNTER)
در جلسات گذشته دیدیم که برای جمع نمودن تعداد داده های موجود در یک سطر یا یک ستون از فرمول =COUNT( ) در یک سل از سلهای اکسل استفاده می شود. در این مرحله میخواهیم با استفاده از متغیری تحت عنوان شمارنده (یا (COUNTER، عمل شمارش را انجام دهیم.
بدین منظور ابتدا باید مقدار شمارنده را برابر صفر گذاشته و در مرحله بعدی پس از گذاردن شرط برنامه، به شمارنده یک واحد یا هر مقداری که لازم باشد اضافه یا کم می کنیم.
مثال : نمرات دانش آموزان یک کلاس در ستون اول یک شیت وجود دارد. می خواهیم برنامه ای بنویسیم که تعداد افرادی که قبول شده اند و تعداد افرادی که قبول نشدهاند را در یک سطر اکسل نوشته و خود نمرات را نیز برحسب قبولی و یا رد شدن افراد تغییر رنگ دهد.
برای نیل به این هدف ازیک متغیر به نام c به عنوان شمارنده استفاده می کنیم. سپس از یک حلقه FORو یک شرط IF استفاده نمایم. لذا برنامه به شکل زیر نوشته می شود:
Sub example1()
c = 0
For i = 1 To 20
If Cells(i, 1).Value >= 10 Then
sum = sum + 1
Cells(i, 1).Font.ColorIndex = 5
Else
Cells(i, 1).Font.ColorIndex = 3
End If
Next i
Cells(21, 1).Value = c
Cells(22, 1).Value = 20 - c
End Sub
همانطور که ملاحظه شد، برنامه در ابتدا برای مقدار متغیر c عدد صفر را در نظر دارد. همانطور که هر سطر جدول با شرط خط چهارم بررسی می شود و چنانچه واجد این شرط بود(اعداد بزرگتر از 10) یک شماره به شمارنده اضافه می گردد و همانطور تا اتمام برنامه این عملیات بروزرسانی شمارنده ادامه پیدا می کند.
انباره (accumulator)
در این مرحله می خواهیم پروسه جمع نمودن اعداد یک سطر یا یک ستون و یا اعدادی که مورد توجه برنامه می باشند را مد نظر قرار دهیم. به عنوان مثال می خواهیم برنامه ای بنویسیم که اعداد فرد 1 تا 100 را جمع نموده و نتیجه را در سلول B1 تایپ نماید.
برای این منظور می بایست متغیری مانند Sumرا در نظر گرفت و حاصلجمع را مرتبا در آن انبار کنیم برای نیل به این منظور می بایست برنامه ای به شرح زیر نوشت:
Sub aaa()
Sum = 0
For i = 1 To 100 Step 2
Cells(i, 1) = i
Sum = Sum + i
Next
Cells(1, 2) = Sum
End Sub
نکته: به عبارت sum=sum+i توجه کنید. در نوشتن یک شمارنده ما به مقدار قبلی شمارنده یک (1 ) اضافه می کردیم.
ولی در این برنامه با توجه به شرایط بوجود آمده مقدار دیگری مانند i همواره به sum اضافه می شود.
نویسنده: علی فاتحی