PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : کانتر سازی و تابع جمع در محیط ویژوال بیسیک- حلقه های شرطیdo-loop



ali.b
2014/10/08, 14:06
در این جلسه می خواهیم پروسه ایجاد یک شمارنده(CONTER)، طریقه جمع نمودن مقادیر عددی موجود در یک سطر یا ستون و... و در نهایت معرفی حلقه شرطی LOOP-WHILE بپردازیم.

شمارنده(COUNTER)
در جلسات گذشته دیدیم که برای جمع نمودن تعداد اطلاعات موجود در یک سطر یا یک ستون از فرمول =COUNT( ) در یک سل از سلهای اکسل استفاده می شود. در این مرحله می*خواهیم با استفاده از متغیر COUNTER، شمارش تعداد کرکترها صورت پذیرد.
بدین منظور ابتدا باید مقدار کانتر را برابر صفر گذاشته و در مرحله بعدی پس از گذاردن شرط برنامه، کانتر را مساوی کانتر +1 قرار می دهیم:
در مثال زیر تعداد نمرات موجود دانش آموزان یک کلاس وجود دارد. می خواهیم برنامه ای بنویسیم که تعداد افرادی که قبول شده اند و تعداد افرادی که قبول نشده*اند را در یک سطر اکسل نوشته و خود نمرات را نیز برحسب قبولی و یا رد شدن افراد تغییر رنگ دهد:
برای نیل به این هدف می بایست از یک حلقه FOR و یک شرط IF استفاده نمایم.لذا برنامه به شکل زیر نوشته می شود:

Sub ccc()
counter = 0
For i = 1 To 20
If Cells(i, 1).Value >= 10 Then
counter = counter + 1
Cells(i, 1).Font.ColorIndex = 5
Else
Cells(i, 1).Font.ColorIndex = 3
End If

Next i

Cells(21, 1).Value = counter
Cells(22, 1).Value = 20 - counter

End Sub

همانطور که ملاحظه شد، برنامه در ابتدا برای مقدار متغیر COUNTER عدد صفر را در نظر دارد. همانطور که هر سط جدول با شرط خط چهارم بررسی می شود و چنانچه واجد این شرط بود(اعداد بزرگتر از 10) یک شماره به کانتر اضافه می گردد و همانطور تا اتمام برنامه این پرسه جایگزینی ادامه پیدا می کند.
نکته: متغیرCOUNTER فرمول خاصی در برنامه VBA نیست.به جای این عبارت می توان از هر متغیر دیگری که توسط VBA پذیرفته باشد نیز استفاده نمود.استفاده از این عبارت تنها برای انتقال درست تر مفهوم و قابل فهم تر شدن برنامه برای دیگر استفاده کنندگان می باشد.

انباره (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 انتخابی را مد نظر قرار دهیم.I ای که توسط شروط موجود برنامه ایجاد گردیده است.
همانطور که برای متغیر COUNTER نیز عنوان شد، SUM نیز یک متغیر است. متغیری جهت انتخاب، جایگزینی، جمع نمودن و در نهایت جایگزینی مجدد.
استفاده از حلقه شرطی DO-LOOP

حلقه های شرطی حلقه هایی اند که تا زمانی که شرط برقرار باشد و یا نباشد –برحسب نیاز برنامه- مورد استفاده قرار می گیرد.
ساختار کلی یک حلقه DO-LOOP به شکل زیر است:
روش اول: در این روش شرط در ابتدا بررسی می شود
DO
دستورات
LOOP WHILE یاUNTIL شرط مورد نظر
روش دوم: در این روش شرط انتها بررسی می شود

DO WHILE یاUNTIL شرط مورد نظر
دستورات
LOOP

به این مفهوم که:
انجام بده این کار را تا زمانی که بتونی انجام بدی....
یا
انجام بده این کار را تا زمانی که نتونی انجام بدی....

در اینجا می خواهیم با ذکر برنامه ساده ای کاربرد این حلقه را به اختصار توضیح دهیم. به عنوان نمونه می خواهیم برنامه ای در محیط VBA بنویسیم که اعداد موجود در یک ستون اکسل را تا جایی که عدد وجود دارد جمع نماید.چنین برنامه ای باید به شکل زیر نوشته شود:


Sub do_loop()
i = 0

Do
i = i + 1
Loop While Cells(i, 1)<>""

Cells(1, 2) = i – 1

End Sub

ملاحظه می شود که برنامه اعداد I را در ستون مذکور تا جایی که به سل خالی برسید با هم جمع می کند.توضیح بیشتر و برنامه های بیشتر در مورد این حلقه شرطی به جلسه بعد موکول می شود.

نکته-وقتی از WHILE استفاده می شود مادامیکه شرط برقرار باشد دستورات انجام میشوند
وقتی از Until استفاده می شود حلقه به محض وقوع شرط حلقه خاتمه می یابد( به عبارتی حلقه تا زمانیکه شرط برقرار نیست ادامه پیدا می کند)

منبع:

دوست عزیز اقای بیرامی
اینم ادرس سایت
http://persianblog.ir (http://persianblog.ir/)