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

 

به این مفهوم که:

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

یا

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

/ 2 نظر / 203 بازدید
محمد حسین

آقا واقعا عالیه . تقریبا همه رو خوندم و همگی عالیه . فقط اگه میشه این رو هم بذار که چطور می شه یه فایل اکسل ( که وجود داره ) رو باز کرد ، مقادیرش رو عوض کرد و در نهایت اون رو بست . ( البته من از ماکرو استفاده نمی کنم و برنامه ام رو جدا تو محیط ویندوز (.exe )می خواهم بنویسم )

محمد حسین

خودم فهمیدم . البته با کمک شما .( راهنمایی ای که کرده بودی مبنی بر کمک گرفتن از خود اکسل برای ماکرو ضبط کردن ) . جوابش هم اینه : Dim ApExcel As Object 'To open Excel Set ApExcel = CreateObject("Excel.application") 'Creates an object ApExcel.Visible = True ChDir "F:\Documents and Settings\mohammad\Desktop\desktop" ApExcel.Workbooks.Open FileName:= _ "F:\Documents and Settings\mohammad\Desktop\desktop\Labels.xlsx" البته باید الان فقط سعی کنم تا بجای مکان ثابت از یک متغیر استفاده کنم . از ضحمات و آموزش های بی نظیرت متشکرم.