برنامه نویسی تخصصی

GIS, Autocad, Access, Excel

آموزش حلقه ها در VBA


  آذر ۲۳, ۱۳۹۶   /     /   برنامه نویسی اکسل,ویژوال بیسیک (vba)
excel-vba

آموزش حلقه For و For Each و Do While در vba

در راستای چندین پست در مورد آموزش vba اکسل برآن شدم تا یک جلسه هم آموزش کاربردی هم بزارم تا کاربران سایت بیشتر با برنامه نویسی آشنا شوند، مبحثی که انتخاب کرده ام حلقه ها می باشد، حلقه ها در تمامی زبان های برنامه نویسی اهمیت ویژه ای دارند به دلیل آن که هدف ما هم از برنامه نویسی مخصوصا اکسل حذف عملیات تکراری می باشد و این به عهده حلقه ها می باشد و چند نوع حلقه از لحاظ بررسی داریم، از آنجا که پرکاربرد ترین حلقه ها در vba حلقه For و For Each می باشد و تفاوت چندانی با هم ندارند، فقط در حلقه For از یک بازه تا بازه مشخص حلقه اجرا می شود یعنی ابتدا و انتها دارد ولی در For Each حلقه در یک بازه ای اجرا می شود که ابتدا و انتهای آن مشخص نباشد مثلا در محدوده Selection ما نمیدانیم کاربر چه تعداد سلول را انتخاب کند، پس در این نوع اگر بخواهیم حلقه درست کنیم باید از حلقه For Each استفاده کنیم تا تک تک آن ها را بررسی کند، در حلقه For Each معمولا از شمارنده نیز برای سلول ها استفاده می شود که شمارنده اول را خارج از حلقه قرار میدهیم که در مثال نیز مشاهده میکنید.

در این پست مثالی که زدم میخواهم نام شیت ها را با استفاده از دو نوع حلقه For و For each استخراج کرده و اتوماتیک در سلول ها درج نماید، ما برای استخراج نام شیت هم میتوانیم از این کد استفاده نماییم :

Sheets(I).Name

و هم میتوانیم از خاصیت WorkSheet هم اسفاده کنیم :

Worksheet.Name

البته باید یادآور بشوم که Sheet همان WorkSheet می باشد که این ها هم در مجموعه WorkSheets می باشند، پس در حلقه For Each ما باید مجموعه WorkSheet را بررسی کرده و هر کدام از برگ ها را در سلول ها وارد نماییم :

استخراج نام شیت با حلقه For :

For i = 1 To Sheets.Count
Cells(i, 1) = Sheets(i).Name
Next

همانطور  که گفتم در حلقه For ابتدا و انتهای بازه را مشخص میکنیم که در این مثال ما از شیت یک استفاده کردیم تا آخرین شماره شیتی که با Sheets.Count بدست می آید، سپس نام شیت ها را با Sheets.Name وارد سلول ها می کنیم.

استخراج نام شیت با حلقه For Each :

در این نوع حلقه هم ما فقط یک بازه را می دهیم و تک تک مقدار داخل این بازه را بررسی میکند :

i = 1
For Each Worksheet In Worksheets
Cells(i, 2) = Worksheet.Name
i = i + 1
Next

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

 

استخراج نام شیت ها با حلقه Do While :

در حلقه Do While به برنامه یک شرط یا یک بازه را میدهیم و تا زمانی حلقه کار میکند که شرط درست باشد و با loop دوباره به اول برگشته و در صورت صحیح بودن دوباره حلقه اجرا میشود، همین برنامه استخراج شیت رو برای اینکه با حلقه ها بیشتر آشنا بشید با حلقه Do While نیز نوشته ام(این قسمت در فیلم وجود ندارد) :

i = 1

Do While i <= Sheets.Count
    Cells(i, 1).Value = Sheets(i).Name
    i = i + 1
Loop

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

  • البته بهتر بود در این مثال ها برای متغیر i اندازه در نظر بگیریم اما چون کدها مختصر باشه دیگر تعریف نکردم.

همچنین میتوانید فیلم این آموزش را نیز در آپارات مشاهده نمایید.

 





این مطلب را در شبکه های اجتماعی به اشتراک بگذارید

فیس نما   فیس نما   فیس نما   فیس نما   فیس نما   فیس نما   فیس نما   کلوب   فیس نما  

2 دیدگاه برای "آموزش حلقه ها در VBA"


رضا کریمی گفت:

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

بهمن جعفری گفت:

سلام. خواهش میکنم

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *