حلقه For Each در VBA اکسل

امتیاز 5.00 ( 1 رای )

توجه:برای استفاده و مطلع شدن از سایر آموزش های رایگان و غیر رایگان سایت در موارد زیر عضویت یابید:


حلقه for each در VBA اکسل

حلقه for each در VBA اکسل

حلقه For Each در VBA اکسل:

توصیه: اگر تا به کنون کدنویسی انجام نداده اید و تب(زبانه) Developer را فعال نکرده اید حتما آموزش ماکرو چیست؟ را مشاهده بفرمایید.

حلقه For Each یکی از پرکاربردترین و پر استفاده ترین حلقه های مورد استفاده در محیط VBA و برنامه نویسی اکسل می باشد.

در تمامی دستورات حلقه ( همچون For،For Each ) تا زمانی که شرط حلقه برقرار باشد، تمامی دستورات نوشته شده درون حلقه به ازای هر مقدار متغییر/شیء اجرا می شود. اما بپردازیم به عملکرد دقیق حلقه For Each در محیط کدنویسی:

معرفی حلقه For Each:

این حلقه را می توان یک حلقه شیء گرا دانست زیرا در دستورات آن به شیء همچون شیء Range ،Cell و… اشاره کرد. الگوی و شکل اصلی این دستور مطابق زیر است:

معنای دستور For Each این است که؛ به ازای تمامی اشیاء(مثل Rng متغییری از نوع Range یا Wsheet متغییری از نوع Worksheet که حتما باید آن را با استفاه از دستور Dim تعریف کرد.مثال: Dim Rng As Range) موجود در مجموعه شیء (“Range(“A1:A10 تمامی دستورات نوشته شده در محل Statements را اجرا کن تا به آخرین شیء(شرط توقف حلقه)برسیم.

مثال از حلقه For Each:

در اینجا یک مثال کاربردی از دستور For Each داریم که فیلم آموزش این حلقه را حتما در زیر همین پست دانلود و مشاهده بفرمایید.

همچون تصویر زیر، قصد داریم با استفاده از حلقه For Each، کدنویسی را به نحوی انجام دهیم که با اجرای آن تمامی اطلاعاتی را که در سلول های B1:B5 در صفحه دوم شامل: نام، نام خانوادگی، محصول، مبلغ و محل سکونت نوشته می شود، به سطری در صفحه اول برود. و با ثبت مکرر اطلاعات، اطلاعات در ردیف هایی پشت سر هم در صفحه اول قرار گیرند.

مرحله اول ثبت اطلاعات با حلقه For Each

مرحله اول ثبت اطلاعات با حلقه For Each

کد نویسی برای انجام اینکار به صورت زیر انجام می شود:

مثال حلقه For Each در VBA

مثال حلقه For Each در VBA

توضیح کدنویسی بالا:

پس از تشکیل Sub و End Sub، در ابتدا متغییری به اسم Rng از نوع محدوده یا سلول ها(Range)، با استفاده از دستور Dim تعریف می کنیم. سپس در خط بعدی با استفاده از دستور حلقه For Each، گفته شده به ازای تمامی Rng ها یا در واقع همان سلول ها، درون محدوده سلول های A1:A100 از صفحه یک،(سپس در خط بعدی) با استفاده از دستور IF نوشته شده است که اگر Rng(که همان محدوده سلول های A1:A100 از صفحه یک است.) خالی بود(” “) آنگاه نسبت به همان سلول Rng که تاییدیه خالی بودن را با استفاده از دستور IF گرفت، سلول های B1 تا B5 صفحه دوم را به ترتیب در سلول Rng و offset های Rng قرار بده و سپس از حلقه خارج بشو.(اگر دستور Exit For را حذف کنید و ننویسید، به محض پیدا شدن اولین Rng خالی تمامی محدوده B1:B5 به صفحه اول منتقل می شود و مجددا سطر خالی بعدی (Rng) را پیدا می کند و بار تمامی محدوده B1:B5 به صفحه اول را به سطر Rng بعدی انتقال می دهد. این کار موجب می شود که اشتباها کلیه محدوده A1 تا A100 پر از اطلاعات شود.)

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

نکته در مورد استفاده از ویژگی offset در محیط VBA:

(حرکت در جهت ستون ،  حرکت در جهت ردیف)Offset.

در هر سطر Rng.offset، با استفاده از ویژگی offset بعد از شیء Rng نسبت به سطر حرکت نکرده ایم و در جهت ستون به ترتیب هر بار، به میزان یک ستون تا پنج ستون جابه جا شده ایم و به جلو رفته ایم و سلول های B1 تا B5 را قرار داده ایم.

و سپس با قرار دادن ویژگی Clear بعد از شیء Range، سلول های B1 تا B5 را خالی کرده ایم.

در این قسمت طی یک فیلم، به آموزش حلقه For Each در VBA اکسل می پردازیم. اگر مفید بود یا درخواست آموزشی مشابه دارین، زیر همین پست کامنت بگذارید.

مطالعه بیشتر