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

در حلقه ها اجرا کننده کد، در خط های درون حلقه گیر می کند و تا پایان شرایط مدام کد های درون حلقه را اجرا میکند و دوباره اجرا می کند و دوباره اجرا می کند…

 

حلقه ها در اکسل

یکی از کاربرد های حلقه در اکسل حرکت درون خانه های اکسل است، در تک حلقه ها به صورت یک بعدی می توان در حلقه ها حرکت کرد.

قبلا یاد گرفتیم چگونه دکمه ای ایجاد کنیم تا کلیک بر روی آن کدی اجرا شود، از همان تکنیک استفاده می کنیم و کد زیر را در هنگام کلیک بر روی دکمه اجرا خواهیم کرد:

 

 Dim i As Integer

For i = 1 To 6
    Cells(i, 1).Value = 100
Next i

 

 

نتیجه اجرای کد به صورت زیر خواهد بود:

در خط اول یک متغیر با نام i ساختیم که از جنس اینتیجر است و اعداد درون آن جای می گیرد.

بلوک حلقه از For  شروع شده و تا Next i ادامه دارد و کد های درون این بلوک از زمانی که i برابر با ۱ است شروع می شود و تا زمانی که مقدار i به ۶ برسد ادامه دارد.

کد درون حلقه Cells(i, 1).Value = 100 است.

 

یعنی در بار اول اجرای حلقه کد Cells(1, 1).Value = 100 اجرا می شود و با رسیدن به Next i به مقدار i یک واحد اضافه می شود.

یعنی در بار دوم اجرای حلقه کد Cells(2, 1).Value = 100 اجرا می شود.

در بار سوم اجرای حلقه کد Cells(3, 1).Value = 100 اجرا می شود.

در بار چهارم اجرای حلقه کد Cells(4, 1).Value = 100 اجرا می شود.

 

حلقه های تو در تو در VBA

می توان حلقه ای را درون حلقه ی دیگری بکار برد! این کار باعث می شود کل حلقه درونی به تعداد اجرای حلقه بیرونی اجرا میشود.

مثال دکمه را یک بار دیگر با کد زیر اجرا میکنیم:

Dim i As Integer, j As Integer

For i = 1 To 6
    For j = 1 To 2
        Cells(i, j).Value = 100
    Next j
Next i

 

 

یک حلقه را با متغیر i و دیگر را با j به چرخش در می آوریم.

در این حالت پیمایش سلول های اکسل را به صورت دوبعدی خواهیم داشت:

دقت کنید:

کدی که به صورت دوبعدی اجرا می شود و در هر دو حلقه می باشد Cells(i, j).Value = 100 است.

یعنی زمانی که در اولین مرحله از اجرای حلقه ی بیرونی هستیم کد های زیر اجرا میشود:

Cells(1, 1).Value = 100

Cells(1, 2).Value = 100

(چون حلقه ی درونی دوبار اجرا میشود، این دو کد تولید میشود)

در دومین اجرای حلقه بیرونی کد های زیر اجرا میشود:

Cells(2, 1).Value = 100

Cells(2, 2).Value = 100

و الی آخر….

 

حلقه تو در تو سه تایی‎

در این حالت کار به صورت سه بعدی پیش میرود، ستون ها ، ردیف ها و شیت ها!

Dim c As Integer, i As Integer, j As Integer

For c = 1 To 3
    For i = 1 To 6
        For j = 1 To 2
            Worksheets(c).Cells(i, j).Value = 100
        Next j
    Next i
Next c

تحلیل کد با خودتان.

 

 

حلقه های Do While

این مدل حلقه ها کاری به دفعات اجرای کد درون حلقه ندارد، و تا زمانی که یک شرط خاص محقق باشد کار خود را  ادامه میدهد!

کد زیر را در مثال دکمه می گذاریم:

Dim i As Integer
i = 1

Do While i < 6
    Cells(i, 1).Value = 20
    i = i + 1
Loop

البته ما در این مثال کاری کردم که کد مانند حالت های قبل به صورت دفعات اجرا باشد، کد تا زمانی که i < 6 باشد اجرا می شود، و خودمان باید با کد i = i + 1 مقدار i را افزایش دهیم. در این حالت بلوک از Do While شروع می شود و تا Loop ادامه دارد.

 

مثال ۲:

یک فایل جدید بازکنید و در ستون اول مانند شکل زیر اعدادی به دلخواه وارد کنید.

 

 

باز از مثال دکمه استفاده کنید و کد زیر را اجرا کنید.

Dim i As Integer
i = 1

Do While Cells(i, 1).Value <> ""
    Cells(i, 2).Value = Cells(i, 1).Value + 10
    i = i + 1
Loop

اینبار شرط حلقه این است که خانه Cells(i, 1) مخالف با “” باشد، یعنی خالی نباشد.

در خانه هایی که خالی نیستند روی ستون کناریشان مقدار را +۱۰ می کنیم و وارد میکنیم!

تحلیل با خودتان

 

درباره نویسنده

سید حامد موسوی

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

متن نظر