برنامه نويسي در محيط ويژوال بيسيك كاربرد در اكسل(VB)


+ جلسه نهم- کانتر سازی و تابع جمع در محیط ویژوال بیسیک- حلقه های شرطیDO-LOOP

جلسه نهم:

 

در این جلسه می خواهیم پروسه ایجاد یک شمارنده(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  استفاده می شود حلقه به محض وقوع شرط حلقه خاتمه می یابد( به عبارتی حلقه تا زمانیکه شرط برقرار نیست ادامه پیدا می کند)

نویسنده : حامد بیرامی ; ساعت ۱۱:۳۱ ‎ق.ظ ; ۱۳۸۸/۱٠/٢۱
تگ ها:
comment نظرات () لینک