4.8/5 - (6 امتیاز)
همانطور که از عنوان مشخص است در این مطلب قسمت سوم موضوع مفهوم حلقه در ماکرونویسی را بررسی میکنیم. شما میتوانید برای مطالعه دو قسمت قبل از این موضوع به لینک های زیر مراجعه کنید:

مفهوم حلقه ها(loop) در ماکرونویسی (قسمت اول)

مفهوم حلقه ها (loop) در ماکرونویسی (قسمت دوم)

در این قسمت حلقه Do در ماکرو نویسی را مورد بررسی قرار خواهیم داد. این حلقه یک قطعه کد را تا زمانی که شرط مشخص شده صحیح یا غلط بماند، تکرار میکند. برای مثال فرض کنید میخواهید یک قطعه کد بر روی سلول های یک محدوده به ترتیب اجرا شود و تا زمانی که به سلول خالی برنخورده اید، حلقه اجرا شود. در این صورت میتوانید از حلقه Do استفاده کنید. تفاوت این حلقه با حلقه For و For each در این است که در حلقه های گفته شده شما تعداد تکرار را می دانید و صراحتا آن را مشخص میکنید ولی در حلقه Do شما تعداد دقیق تکرار حلقه را نمی دانید و این تعداد بستگی به شرط مشخص شده دارد.

همین موضوع ریسک حلقه Do را بسیار افزایش میدهد. زیرا از آنجایی که تعداد تکرار حلقه Do در برنامه نویسی VBA مشخص نیست ممکن است تبدیل به حلقه بی نهایت(infinite) شود.

حلقه Do در ماکرونویسی

چهار نوع حلقه Do در برنامه نویسی VBA وجود دارد. هرکدام از این انواع تفاوت های اندکی با دیگر انواع آن دارد. ممکن است توضیح تئوریک هرکدام از این انواع باعث سردرگمی شما شود به همین خاطر در ادامه انواع حلقه های Do در ماکرونویسی را در قالب مثال توضیح خواهیم داد.

حلقه DO While در ماکرونویسی

در مثال زیر حلقه در سلول های ستون A اجرا میشود و به سمت پایین ستون حرکت میکند و تا زمانی اجرا میشود که مقدار سلول  کمتر از 10 باشد. به محض اینکه مقدار یک سلول بیش تر از 10 باشد، حلقه متوقف میشود.

'ایجاد یک شمارنده
Dim i As Integer
i = 1

'تا زمانی که مقدار سلول کمتر از 10 باشد حلقه اجرا میشود.
Do While Cells(i, 1) < 10

    MsgBox i

    'اضافه کردن یک واحد به شمارنده
    i = i + 1

Loop

حلقه DO until در برنامه نویسی VBA

ترکیب حلقه DO until درست مخالف حلقه Do while  وارد میشود. . در اینجا به جای اینکه حلقه تا زمانی که مقدار سلول کمتر از 10 باشد اجرا شود، در این مثال حلقه تا زمانی اجرا میشود که مقدار سلول بیش تر از 10 نباشد. در این صورت نتیجه هر دو مثال قبل یکسان خواهد بود.


Dim i As Integer
i = 1

'تا زمانی که مقدار سلول بزرگتر یا مساوی نشده است، حلقه اجرا میشود.
Do Until Cells(i, 1) >= 10

    MsgBox i

        i = i + 1

Loop

حلقه  DO loop While

در بعضی از مواقع نیاز است که کد مربوط به حلقه، حداقل یک بار اجرا شود. در این صورت حلقه ها گفته شده کاربردی نخواهد داشت. در این صورت از حلقه DO loop while استفاده خواهد شد:

این حلقه شرط مورد نظر را در انتهای حلقه قرار میدهد در نتیجه حلقه حداقل یکبار اجرا میشود.

Dim i As Integer
i = 1

'شروع حلقه 
Do

    MsgBox i      
   i = i + 1

'تا زمانی که مقدار سلول بعد کمتر از 10 باشد حلقه اجرا میشود. 
Loop While Cells(i, 1) < 10

در این مثال، بدون توجه به اینکه آیا مقدار موجود در سلول A1 بزرگتر یا کوچکتر از 10 هست یا خیر، کد حداقل یکبار تکرار میشود.

  حلقه  DO loop until

همانطور که احتمالا تاکنون حدس زده اید، حلقه آخر یعنی  DO loop until حلقه را برای بار اول اجرا میکند و تا زمانی که شرط مورد نظر محقق شود، اجرای آن را تکرار میکند.


Dim i As Integer
i = 1

'شروع حلقه
Do

    MsgBox i

    'اضافه کردن یک واحد به شمارنده
    i = i + 1

Loop Until Cells(i, 1) >= 10

متوقف کردن اجرای یک حلقه در ماکرونویسی

وقتی از یک حلقه برای پیدا کردن چیزی استفاده میکنید، اینکه بعد از پیدا شدن آن هنوز حلقه اجرا شود، بسیار عصبانی کننده است. مثل اینکه کلیدهای خود را گم کرده باشید و پس از پیدا شدن آن هنوز دنبال آن بگردید. برای متوقف کردن حلقه های DO در برنامه نویسی VBA میتوانید از Exit do استفاده کنید.

Dim i As Integer
i = 1

    MsgBox i
    
       If Cells(i, 1) >= 10 Then
 exit do
      End If

 i = i + 1

Loop

 

حلقه بی نهایت (Infinite loop)

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

کد زیر تا زمانی که مقدار Counter  بزرگتر از 100  نباشد اجرا خواهد شد. از آنجایی که مقدار counter از صفر شروع میشود و به مرور کمتر میشود هیچگاه 100 نخواهد شد در نتیجه حلقه به صورت بی نهایت اجرا میشود.

Dim i As Integer
i = 1

Do Until i > 100

       i = i - 1

Loop

 

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

برای مشاهده مطالب و فیلم های آموزشی بیشتر در زمینه برنامه نویسی VBA به صفحه ” دوره رایگان آموزش ماکرونویسی در اکسل” مراجعه کنید.

 

 

 

 

مشترک شدن
Notify of
guest

4 نظرات
نظردهی درون متنی
مشاهده همه نظرات
امیر صالح

درود بر شما. نخست باید از زحمات شما تشکر کنم. من در برنامه نویسی صفر هستم. نیاز به کار تکراری در اکسل داشتم پرسان پرسان به vba رسیدم.

Sub Macro1()

‘ Macro1 Macro

‘ Keyboard Shortcut: Ctrl+q

  Range(“C4”).Select
  ActiveCell.FormulaR1C1 = “=’P1′!R[-1]C[38]”
  Range(“C5”).Select
  ActiveCell.FormulaR1C1 = “=’P2’!R[-2]C[38]”
  Range(“C6”).Select
End Sub

جسارتا این ماکرو رو ضبط کردم اگر بخواهیم تا c350 برود چطوری باید نوشت… چند بار امتحان کردم نشد..
باز هم ممنونم

امیر دایی

قاعدتا اگر وی بی ای نیستید یا باید مقدمات وی بی ای رو توی سایت های مختلف سرچ کنید و مطالعه کنید یا یک دوره مقدماتی vba بگذرونید.
فیلم های اموزشی زیر رو ببینید:
دوره رایگان ماکرونویسی در اکسل

ریحانه

سلام و خداقوت .
سپاسگذار از اینکه آموزش هاتون رو به صورت رایگان به اشتراک میگذارید .

امیر دایی

خواهش میکنم، موفق باشید.