حلقه For --- Next

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • Alireza
    مدير تالار تنظيمات اكسل

    • 2011/03/01
    • 648
    • 80.00

    حلقه For --- Next

    بدون حلقه سازی . برنامه ها بسیار خسته کننده و درد سر ساز خواهند شد . حلقه سازی اجازه می دهد تا در زمان برقرار بودن یک شرط یا رسیدن به یک مقدار مشخص یک مقدار مشخص یک بلوک کد اجرا شود . برای مثال فرض کنید که می خواهید اعداد 1 تا 3 را نمایش دهید و می توانید برنامه را به صورت زیر بنویسید .
    کد PHP:
    sub msg()
    Msgbox "1"
    msgbox"2"
    msgbox"3"
    end sub 
    این برنامه جواب می دهد اما کارآمد نیست و از کارآیی VBA نیز به خوبی استفاده نمی کند . اگر بخواهید اعداد بیشتری را به کمک این کد نمایش دهید مجبور خواهید بود کد طولانی تری بنویسید .مثلا اگر بخواهید اعداد 1 تا 100 را نمایش دهید باید 99 خط دیگر را به کد فوق اضافه کنید .!
    حلقه For --- Next
    با استفاده از دستور حلقه سازی For --- Next می توانیم کد فوق را ساده تر بنویسیم .
    کد PHP:
    sub msg 1()

    for 
    n1 To 5
    MsgBox n
    Next N
    end sub 

    کادر پیفام 5 مرتبه ظاهر خواهد شد و مقادیر n را که از 1 تا 5 است . نشان می دهد .
    متغیر به کارگرفته شده . هر چیزی می تواند باشد و هر چند که من از متغیر n استفاده کرده ام اما می توانید حتی از کلمه ای مثل num هم استفاده کنید با این که شرط که تا آخر حلقه بدون تغییر باقی بماند . نمی توانیم از دستور For n = 1 To 5 استفاده کنیم و سپس سعی کنیم تا از شاخصی مانند m استفاده کنیم بلکه باید حتما n را به کار ببریم. هم چنین نباید از یکی از کلمات کلیدی ذخیره شده VBA به عنوان متغیر استفاده کنیم . دستورات به کارگرفته شده در بین For و Next می توانند به هر تعدادی باشند و حتی می تواتیم در بین آنها . توابع و زیر روال ها را نیز فرا بخوانیم . مقادیر شروع و خاتمه در حلقه For ---- Next هم می توانند متفاوت باشند و اجباری نیست که حتما بین 1 شروع و با 5 خاتمه یابند .
    گزینه Step کارآیی بیشتری را برای حلقه For --- Next ایجاد می کند . حتما متوجه شده اید که قرار نیست همیشه متغیر n در هر بار چرخش حلقه 1 واحد افزایش یابد .می توانید بااستفاده از گزینه Step گام حلقه را بالا ببرید . Step به ما اجازه می دهد تا اندازه افزایش و هم چنین جهت حرکت حلقه ( مثبت یا منفی ) را مشخص کنیم . به مثال زیر دقت کنید :
    کد PHP:
    sub msg2()

       for 
    3 To 12 Step 3 
    msgBox n 
    Next n
    end sub 

    خروجی کد زیر 3.6.9.12 خواهد بود چون گام حلقه 3 است .
    برای این که ببینید
    Step چطور به صورت معکوس عمل می کند به مثال زیر دقت کنید :
    کد PHP:
    sub msg3()
    For 
    10 TO 1 Step -1
    MsgBox n
    Next N
    end sub 
    ّ
    نتیجه کد فوق 1.2.3.4.5.6.7.8.9.10 خواهد بود .
    حلقه های
    For --- Next برای خواندن اعداد ستونی یا اعداد ردیفی بسیار مناسب هستند . می توانیم برای افزایش خودکار شماره ردیف در یک آدرس سلول از حلقه For -- Next استفاده کنیم .
    حلقه های
    For --- Next می توانند در داخل یکدیگر به صورت تو در تو نیز به کار گرفته شوند . برای مثال اگر بخواهیم به مقدار موجود در یک صفحه گسترده دست پیدا کنیم می توانیم از یک حلقه For -- Next برای رسیدن به ستون ها و از حلقه For -- Next دوم برای رسیدن به ردیف ها استفاده کنیم .
    مثال کاربردی : فرض کنید قصد دارید مقادیر 1 تا 5 را درسلول های A1:A5 قرار دهید .

    کد PHP:
    sub msg4()
    Dim i as integer
    For 1 to 5 
    Cells
    (i,1)=i
    Next
    end sub 




    [CENTER][COLOR=#ffd700]​[/COLOR]تنها راهي که به شکست مي انجامد، تلاش نکردن است
    [IMG]http://www.graphics18.com/wp-content/uploads/2010/12/yellow-flower23.gif[/IMG]
    [/CENTER]
  • MAHDI7482

    • 2015/03/02
    • 25
    • 100.00

    #2
    For j = 1 To 8
    For i = 1 To 365
    Sheet3.Cells(8 * (i - 1) + j, 1).Value = Sheet2.Cells(i, 2 * j + 1).Value
    Sheet3.Cells(8 * (i - 1) + j, 2).Value = Sheet2.Cells(i, 2 * j + 2).Value
    Sheet3.Cells(8 * (i - 1) + j, 3).Value = Sheet2.Cells(i, 2).Value
    Next
    Next
    سلام اساتید عزیز من با این حلقه کار کردم و مقداری هم متوجه کارش میشم ولی بعضی جاها رو متوجه نمیشم مثل (8 * (i - 1) + j, 2) خط به خط ران کردم متوجه شدم مقداری. مثل اون عدد 8 و 3 کارش میدونم ولی مابقی مثل (i - 1) + j میتونید برام توضیح بدین تا بتونم خودم همچنین حلقه مشابهی بنویسم و ران کنم. با تشکر

    کامنت

    • MAHDI7482

      • 2015/03/02
      • 25
      • 100.00

      #3
      بالاخره یه برنامه نوشتم با اینکه چیزی سر در نمیاوردم اول دفعه اول یه برنامه نوشتم که همش کپی پیست میکرد به طریقی که میخواستم که خیلی حجمش زیاد بود تیکه تیکه اجرا میکردم چند هزار خط بود ولی با حلقه for کارم به ثانیه نمیکشه انجام میده با چند خط برنامه مطمئنم بازم پیش برم ازین ساده تر میشه نوشت

      کامنت

      چند لحظه..