آموزش حلقه For و For Each و Do While در vba
در راستای چندین پست در مورد آموزش vba اکسل برآن شدم تا یک جلسه هم آموزش کاربردی هم بزارم تا کاربران سایت بیشتر با برنامه نویسی آشنا شوند، مبحثی که انتخاب کرده ام حلقه ها می باشد، حلقه ها در تمامی زبان های برنامه نویسی اهمیت ویژه ای دارند به دلیل آن که هدف ما هم از برنامه نویسی مخصوصا اکسل حذف عملیات تکراری می باشد و این به عهده حلقه ها می باشد و چند نوع حلقه از لحاظ بررسی داریم، از آنجا که پرکاربرد ترین حلقه ها در vba حلقه For و For Each می باشد و تفاوت چندانی با هم ندارند، فقط در حلقه For از یک بازه تا بازه مشخص حلقه اجرا می شود یعنی ابتدا و انتها دارد ولی در For Each حلقه در یک بازه ای اجرا می شود که ابتدا و انتهای آن مشخص نباشد مثلا در محدوده Selection ما نمیدانیم کاربر چه تعداد سلول را انتخاب کند، پس در این نوع اگر بخواهیم حلقه درست کنیم باید از حلقه For Each استفاده کنیم تا تک تک آن ها را بررسی کند، در حلقه For Each معمولا از شمارنده نیز برای سلول ها استفاده می شود که شمارنده اول را خارج از حلقه قرار میدهیم که در مثال نیز مشاهده میکنید.
در این پست مثالی که زدم میخواهم نام شیت ها را با استفاده از دو نوع حلقه For و For each استخراج کرده و اتوماتیک در سلول ها درج نماید، ما برای استخراج نام شیت هم میتوانیم از این کد استفاده نماییم :
1 |
Sheets(I).Name |
و هم میتوانیم از خاصیت WorkSheet هم اسفاده کنیم :
1 |
Worksheet.Name |
البته باید یادآور بشوم که Sheet همان WorkSheet می باشد که این ها هم در مجموعه WorkSheets می باشند، پس در حلقه For Each ما باید مجموعه WorkSheet را بررسی کرده و هر کدام از برگ ها را در سلول ها وارد نماییم :
استخراج نام شیت با حلقه For :
1 2 3 |
For i = 1 To Sheets.Count Cells(i, 1) = Sheets(i).Name Next |
همانطور که گفتم در حلقه For ابتدا و انتهای بازه را مشخص میکنیم که در این مثال ما از شیت یک استفاده کردیم تا آخرین شماره شیتی که با Sheets.Count بدست می آید، سپس نام شیت ها را با Sheets.Name وارد سلول ها می کنیم.
استخراج نام شیت با حلقه For Each :
در این نوع حلقه هم ما فقط یک بازه را می دهیم و تک تک مقدار داخل این بازه را بررسی میکند :
1 2 3 4 5 |
i = 1 For Each Worksheet In Worksheets Cells(i, 2) = Worksheet.Name i = i + 1 Next |
در این نوع حلقه اگر قرار باشد از شمارنده استفاده کنیم باید مقدار شمارنده اول را خارج از حلقه معرفی نماییم و سپس داخل حلقه به آن اضافه یا کم کنیم،
استخراج نام شیت ها با حلقه Do While :
در حلقه Do While به برنامه یک شرط یا یک بازه را میدهیم و تا زمانی حلقه کار میکند که شرط درست باشد و با loop دوباره به اول برگشته و در صورت صحیح بودن دوباره حلقه اجرا میشود، همین برنامه استخراج شیت رو برای اینکه با حلقه ها بیشتر آشنا بشید با حلقه Do While نیز نوشته ام(این قسمت در فیلم وجود ندارد) :
1 2 3 4 5 6 |
i = 1 Do While i <= Sheets.Count Cells(i, 1).Value = Sheets(i).Name i = i + 1 Loop |
در این برنامه هم تعداد شیت ها شرط ما هست یعنی حلقه تا زمانی کار میکند که مقدار i کمتر و مساوی تعداد شیت ها باشد.
- البته بهتر بود در این مثال ها برای متغیر i اندازه در نظر بگیریم اما چون کدها مختصر باشه دیگر تعریف نکردم.
همچنین میتوانید فیلم این آموزش را نیز در آپارات مشاهده نمایید.
4 دیدگاه برای "آموزش حلقه ها در VBA"