برای vba بعدی اکسل به بعدی بروید. عبارات حلقه در VBA. پروژه "درآمد در سپرده"

شرایطی وجود دارد که یک برنامه VBA لازم است مجموعه ای از اقدامات را چندین بار پشت سر هم انجام دهد (یعنی همان بلوک کد را چندین بار تکرار کند). این کار را می توان با استفاده از حلقه های VBA انجام داد.

برای بیانیه حلقه در ویژوال بیسیک

ساختار بیانیه حلقه برایدر ویژوال بیسیک را می توان به یکی از دو شکل سازماندهی کرد: به صورت حلقه برای بعدییا مثل یک چرخه برای هر.

چرخه "برای... بعدی"

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

برای i = 1 تا 10 مجموع = مجموع + iArray(i) بعدی i

در این حلقه ساده برای بعدیمتغیر استفاده می شود منکه به ترتیب مقادیر 1، 2، 3، ... 10 را می گیرد و برای هر یک از این مقادیر کد VBA داخل حلقه اجرا می شود. بنابراین، این حلقه عناصر آرایه را جمع می کند iArrayدر یک متغیر جمع.

در مثال بالا، مرحله افزایش حلقه مشخص نشده است، بنابراین متغیر را افزایش دهید مناز 1 تا 10 پیش فرض افزایشی است 1 . با این حال، در برخی موارد لازم است از مقادیر مختلف افزایشی برای حلقه استفاده شود. این را می توان با استفاده از کلمه کلیدی انجام داد گام، همانطور که در مثال ساده زیر نشان داده شده است.

برای d = 0 تا 10 مرحله 0.1 dTotal = dTotal + d بعدی d

از آنجایی که در مثال بالا گام افزایشی بر روی تنظیم شده است 0.1 ، سپس متغیر dTotalبرای هر تکرار چرخه مقادیر 0.0، 0.1، 0.2، 0.3، ... 9.9، 10.0 را می گیرد.

برای تعیین مرحله حلقه در VBA، می توانید از یک مقدار منفی استفاده کنید، به عنوان مثال، مانند زیر:

برای i = 10 به 1 مرحله -1 iArray(i) = i بعدی i

در اینجا مرحله افزایش است -1 ، بنابراین متغیر منبا هر تکرار چرخه، مقادیر 10، 9، 8، ... 1 را می گیرد.

برای هر حلقه

چرخه برای هرشبیه یک چرخه است برای بعدی، اما به جای حلقه زدن از طریق دنباله مقادیر برای متغیر شمارنده برای هرمجموعه ای از اقدامات را برای هر شی در یک گروه مشخص از اشیاء انجام می دهد. در مثال زیر با استفاده از یک حلقه برای هرتمام برگه‌های موجود در کتاب کار فعلی اکسل را فهرست می‌کند:

کم نور wSheet به عنوان کاربرگ برای هر wsheet در کاربرگ MsgBox "Sheet Found: " & wSheet.Name wSheet بعدی

خروج از عملگر وقفه حلقه

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

اپلیکیشن اپراتور خروج برایدر مثال زیر نشان داده شده است. در اینجا حلقه از طریق 100 ورودی آرایه حلقه می زند و هر یک را با مقدار متغیر مقایسه می کند. dVal. اگر مطابقت پیدا شود، حلقه قطع می شود:

برای i = 1 تا 100 اگر dValues(i) = dVal سپس IndexVal = i خروج برای End If Next i

در ویژوال بیسیک Loop انجام دهید

چرخه انجام در حالی کهیک بلوک کد را تا زمانی که یک شرط داده شده برقرار باشد اجرا می کند. در زیر نمونه ای از رویه است زیر، که در آن با استفاده از یک حلقه انجام در حالی کهاعداد فیبوناچی بیش از 1000 به صورت متوالی نمایش داده می شوند:

"رویه Sub اعداد فیبوناچی را چاپ می کند که از 1000 زیر فیبوناچی () Dim i به عنوان صحیح "یک شمارنده برای نشان دادن موقعیت یک عنصر در دنباله Dim iFib As Integer "مقدار فعلی دنباله Dim iFib_Next را به عنوان عدد صحیح ذخیره می کند" مقدار بعدی دنباله Dim iStep As Integer "اندازه افزایش بعدی را ذخیره می کند" متغیرهای i و iFib_Next i = 1 iFib_Next = 0 "آغاز کردن حلقه Do while اجرا می شود تا زمانی که مقدار "عدد فیبوناچی فعلی از 1000 Do تجاوز کند." در حالی که iFib_Next< 1000 If i = 1 Then "особый случай для первого элемента последовательности iStep = 1 iFib = 0 Else "сохраняем размер следующего приращения перед тем, как перезаписать "текущее значение последовательности iStep = iFib iFib = iFib_Next End If "выводим текущее число Фибоначчи в столбце A активного рабочего листа "в строке с индексом i Cells(i, 1).Value = iFib "вычисляем следующее число Фибоначчи и увеличиваем индекс позиции элемента на 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

در مثال داده شده، شرط iFib_Next< 1000 در ابتدای چرخه بررسی می شود. بنابراین، اگر مقدار اول iFib_Nextاگر بیشتر از 1000 بود، حلقه حتی یک بار هم اجرا نمی شد.

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

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

Do...Loop while iFib_Next< 1000

Until Loop را در ویژوال بیسیک انجام دهید

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

IRow = 1 Do Until IsEmpty(Cells(iRow, 1)) "مقدار سلول فعلی در آرایه dCellValues ​​ذخیره می شود dCellValues(iRow) = Cells(iRow, 1).Value iRow = iRow + 1 Loop

در مثال بالا شرط IsEmpty (سلول ها (iRow، 1))در ابتدای سازه قرار دارد انجام دهید تا، بنابراین اگر اولین سلول گرفته شده خالی نباشد، حلقه حداقل یک بار اجرا می شود.

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

انجام ... حلقه تا خالی شدن (سلول ها (iRow, 1))

عبارات حلقه

در VBA دو نوع اصلی از حلقه ها وجود دارد: حلقه با شمارنده (پارامتری) و حلقه با یک شرط (تکرار).

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

حلقه های شرطی زمانی استفاده می شوند که اقدامات خاصی در یک برنامه باید تکرار شوند تا زمانی که یک شرط خاص برآورده شود.

حلقه ها با پارامتربرای بعدی

ساختار چرخه:

برای Cycle_parameter = مقدار_ اولیهبه ارزش_نهایی

[مرحله گام]

اپراتورها

[خروج برای]

بعد [چرخه_پارامتر]

جایی که برای کلمه کلیدی VBA (از)، نشان دهنده آغاز چرخه؛

متغیر loop_parameter که به عنوان یک شمارنده حلقه تعریف شده است.

Initial_Value عددی است که مقدار اولیه پارامتر حلقه را مشخص می کند.

به کلمه کلیدی VBA (قبل)، تقسیم کردن

مقدار_اولیه و دانش_نهایی.

Final_Value عددی که مقدار پارامتر حلقه را مشخص می کند،

که در آن چرخه به پایان می رسد؛

کلمه کلیدی مرحله VBA (مرحله) مورد استفاده برای

مشخصات مرحله حلقه، آرگومان اختیاری.

مرحله یک عدد که مرحله چرخه را مشخص می کند، یعنی. ارزشی که توسط آن

مقدار پارامتر را افزایش (یا کاهش می دهد).

در هر مرحله دوچرخه سواری کنید. این عدد می تواند باشد

منفی؛

خروج برای اپراتور خروج زودهنگام از حلقه (اختیاری)؛

بعد کلمه کلیدی VBA (بعدی) نشان دهنده

پایان چرخه.

چرخه کار:

مرحله 1 ابتدا پارامتر حلقه تعیین می شود و مقادیر اولیه و نهایی این متغیر محاسبه و ذخیره می شود.

مرحله 2 به پارامتر حلقه یک مقدار اولیه اختصاص داده می شود.

مرحله 3 مقدار اولیه پارامتر حلقه با مقدار نهایی مقایسه می شود.

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

مرحله 4 بدنه حلقه اجرا می شود.

مرحله 5 پس از اجرای بدنه حلقه، مقدار بعدی به پارامتر حلقه اختصاص داده می شود. به مرحله 3 بروید.

توجه داشته باشید.

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

مثال 1.

برای I = 0 تا 10 مرحله 2 (مقدار I 2 افزایش می یابد)

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

مثال 2.

Dim S به عنوان عدد صحیح

Dim j به عنوان عدد صحیح

S=2

برای j = 1 تا 10

S = S + j

اگر S > 6 سپس

خروج برای (اگر مقدار از حلقه خارج شوید S > 6)

پایان اگر

j بعدی

MsgBox(S)

حلقه های شرطی (تکرار شونده)

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

در VBA دو حلقه اصلی وجود دارد DO...LOOP با یک شرط وارد شده توسط یک کلمه کلیدیدر حالی که ، و با شرط وارد شده توسط کلمه کلیدیتا زمان . هر دوی آنها می توانند با پیش شرط یا پس شرط باشند.

نحو:

کجا انجام دهید کلمه کلیدی (انجام)؛

در حالی که کلمه کلیدی (هنوز)؛

تا زمان کلمه کلیدی (تا)؛

حلقه یک کلمه کلیدی که نشان دهنده پایان چرخه است.

<условие>یک عبارت منطقی که صحت آن بررسی می شود

در ابتدای هر اجرای بدنه حلقه؛

<тело_цикла>توالی دلخواه عملگرها؛

انجام ... در حین ساخت و ساز می‌خواند: تا زمانی که شرط وجود دارد انجام دهید. در طراحیانجام ... در حالی که برای

Do...تا زمانی که ساخت و ساز می گوید: انجام دهید تا زمانی که شرط برآورده شود. در طراحیانجام دهید... تا زمانی که برای افزایش گام، باید یک عملگر مخصوص بنویسید، زیرا در آن، بر خلاف طراحیبرای ، این کار به صورت خودکار انجام نمی شود.

شرط نوشته شده بعد از کلمه کلیدیتا زمان ، در پایان هر تکرار (بعد از اجرای بدنه حلقه) بررسی می شود. توجه داشته باشید که دقیقاً مانند حلقه کار نمی کنددر حالی که . اگر شرط درست باشد (درست است، واقعی ، سپس حلقه به پایان می رسد. در صورت عدم تحقق شرط (نادرست استنادرست ، سپس بدنه حلقه دوباره اجرا می شود.

مثال 1.

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

تکنولوژی اجرای وظایف:

1. داده های اولیه:من  Z

نتیجه: S  R .

2. رویه سفارشی زیر را در ماژول پروژه استاندارد با استفاده از یک حلقه با پیش شرط تایپ کنیددر حالی که:

خلاصه فرعی ()

Dim S به عنوان عدد صحیح

Dim i به عنوان عدد صحیح

S=0

i = 1

انجام در حالی که من<= 10

S = S + i^2

i = i + 1

حلقه

MsgBox(S)

پایان فرعی

3. رویه سفارشی زیر را در ماژول پروژه استاندارد با استفاده از یک حلقه با پیش شرط تایپ کنیدتا زمان:

خلاصه فرعی ()

Dim S به عنوان عدد صحیح

Dim i به عنوان عدد صحیح

S=0

i = 1

تا i > 10 انجام دهید

S = S + i^2

i = i + 1

حلقه

MsgBox(S)

پایان فرعی

4 رویه سفارشی زیر را در ماژول پروژه استاندارد با استفاده از یک حلقه با یک شرط پست تایپ کنیددر حالی که:

خلاصه فرعی ()

Dim S به عنوان عدد صحیح

Dim i به عنوان عدد صحیح

S=0

i = 1

S = S + i^2

i = i + 1

حلقه در حالی که i<= 10

MsgBox(S)

پایان فرعی

5 رویه سفارشی زیر را در ماژول پروژه استاندارد با استفاده از یک حلقه با یک شرط پست تایپ کنیدتا زمان:

خلاصه فرعی ()

Dim S به عنوان عدد صحیح

Dim i به عنوان عدد صحیح

S=0

i = 1

S = S + i^2

i = i + 1

حلقه تا i > 10

MsgBox(S)

پایان فرعی

ممکن است شرایطی پیش بیاید که لازم باشد یک بلوک کد را چندین بار اجرا کنید. به طور کلی، دستورات به صورت متوالی اجرا می شوند: اولین دستور در یک تابع ابتدا اجرا می شود، سپس دوم و غیره.

زبان های برنامه نویسی ساختارهای کنترلی مختلفی را ارائه می دهند که مسیرهای اجرایی پیچیده تری را امکان پذیر می کند.

دستور حلقه به ما این امکان را می دهد که یک دستور یا گروهی از دستورات را چندین بار اجرا کنیم. در زیر یک نمای کلی از یک دستور حلقه در VBA وجود دارد.

VBA انواع حلقه های زیر را برای رسیدگی به الزامات حلقه ارائه می کند. برای بررسی جزئیات آنها روی لینک های زیر کلیک کنید.

برای حلقه

حلقه for یک ساختار کنترل تکرار است که به توسعه‌دهنده اجازه می‌دهد تا حلقه‌ای را بنویسد که باید چندین بار اجرا شود.

نحو

در زیر سینتکس حلقه for در VBA آمده است.

برای شمارنده = شروع به پایان .... .... بعد

نمودار جریان

در زیر جریان کنترل در حالت حلقه وجود دارد -

  • مرحله اول تکمیل شد. این مرحله به شما امکان می دهد تا هر متغیر کنترل حلقه را مقداردهی اولیه کنید و متغیر شمارنده گام را افزایش دهید.
  • در مرحله دوم، شرایط ارزیابی می شود. اگر درست باشد، بدنه حلقه اجرا می شود. اگر نادرست باشد، بدنه حلقه اجرا نمی شود و جریان کنترل بلافاصله پس از حلقه For به دستور بعدی منتقل می شود.
  • پس از اجرای حلقه For، جریان کنترل به دستور بعدی می رود. این عبارت به شما امکان می دهد هر متغیر کنترل حلقه را به روز کنید. بر اساس مقدار شمارنده گام به روز می شود.
  • وضعیت اکنون دوباره ارزیابی می شود. اگر درست باشد، حلقه اجرا می شود و فرآیند تکرار می شود (بدنه حلقه، سپس افزایش گام، سپس دوباره شرط). هنگامی که شرط false شد، حلقه For به پایان می رسد.

مثال

یک دکمه اضافه کنید و تابع زیر را اضافه کنید.

زیر خصوصی Constant_demo_Click() Dim a به عنوان عدد صحیح a = 10 برای i = 0 به مرحله 2 MsgBox "مقدار i است: " & i زیر انتهای بعدی

هنگامی که کد بالا کامپایل و اجرا می شود، خروجی زیر را تولید می کند.

مقدار i است: 0
مقدار i است: 2
مقدار i است: 4
مقدار i است: 6
مقدار i است: 8
مقدار i است: 10

دنباله ای از عبارات را چندین بار اجرا می کند و کد کنترل متغیر حلقه را کوتاه می کند.

برای ... حلقه

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

برای هر حلقه مشابه For Loop است. با این حال، حلقه برای هر عنصر در آرایه یا گروه اجرا می شود. بنابراین، شمارنده گام در این نوع حلقه وجود نخواهد داشت. عمدتاً با آرایه ها یا در زمینه شی مورد استفاده قرار می گیرد سیستم فایلبه صورت بازگشتی کار کند.

نحو

در زیر سینتکس For Every Loop در VBA آمده است.

برای هر عنصر در گروه ... بعد

مثال

Private Sub Constant_demo_Click() "fruits یک آرایه است میوه ها = آرایه("سیب"، "پرتقال"، "گیلاس") نام میوه کم رنگ به عنوان متغیر "تکرار با استفاده از هر حلقه. برای هر مورد در میوه‌ها نام‌های میوه = نام‌های میوه و کالا و Chr(10) MsgBox بعدی نام‌های میوه پایان زیر

هنگامی که کد بالا اجرا می شود، تمام نام میوه ها را با یک عنصر در هر خط چاپ می کند.

سیب
نارنجی
گیلاس

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

در حالی که.. حلقه وند

در حلقه Wend while ...، اگر شرط True باشد، تمام عبارات تا زمانی که با کلمه کلیدی Wend مواجه شود اجرا می شوند.

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

نحو

در زیر سینتکس حلقه while..Wend در VBA آمده است.

در حالی که شرط (ها) ... Wend

نمودار جریان

مثال

زیر خصوصی Constant_demo_Click() Dim Counter: Counter = 10 while Counter< 15 " Test value of Counter. Counter = Counter + 1 " Increment Counter. msgbox "The Current Value of the Counter is: " & Counter Wend " While loop exits if Counter Value becomes 15. End Sub

وقتی کد بالا اجرا شد، در قسمت پیام خروجی زیر را خواهد داشت.

ارزش فعلی شمارنده: 11
ارزش فعلی شمارنده: 12
ارزش فعلی شمارنده: 13
ارزش فعلی شمارنده: 14
ارزش فعلی شمارنده: 15

این شرایط را قبل از اجرای بدنه حلقه بررسی می کند.

انجام..در حالی که حلقه

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

نحو

در زیر نحو حلقه Do...While در VBA آمده است.

Do while شرط...... حلقه

نمودار جریان

مثال

مثال زیر از یک حلقه Do ... while برای بررسی وضعیت در ابتدای حلقه استفاده می کند. دستورات داخل حلقه فقط در صورتی اجرا می شوند که شرط True شود.

Private Sub Constant_demo_Click() Do while i< 5 i = i + 1 msgbox "The value of i is: " & i Loop End Sub

مقدار i برابر است با: 1
مقدار i برابر با 2 است
مقدار i برابر است با: 3
مقدار i: 4 است
مقدار i: 5 است

نحو جایگزین

همچنین یک نحو جایگزین برای حلقه Do ... while وجود دارد که وضعیت را در انتهای حلقه بررسی می کند. تفاوت اصلی بین این دو نحو در مثال زیر توضیح داده شده است.

انجام ... ... وضعیت Loop while

مثال

مثال زیر از یک حلقه Do ... while برای بررسی وضعیت در انتهای حلقه استفاده می کند. دستورات درون یک حلقه حداقل یک بار اجرا می شوند، حتی اگر شرط False باشد.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 MsgBox "مقدار i است: " و i Loop while i< 3 "Condition is false.Hence loop is executed once. End Sub

هنگامی که کد بالا اجرا می شود، خروجی زیر را در یک جعبه پیام چاپ می کند.

مقدار i برابر با 11 است

دستور do..While تا زمانی که شرط True باشد اجرا می شود. (یعنی) حلقه باید تا زمانی که شرط False شود تکرار شود.

انجام.. حلقه داخل

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

نحو

در زیر سینتکس حلقه Do..Until در VBA آمده است.

انجام دهید تا شرط ... ... حلقه

نمودار جریان

مثال

مثال زیر از Do... Before Loop برای آزمایش یک شرط در ابتدای حلقه استفاده می کند. دستورات داخل حلقه فقط در صورتی اجرا می شوند که شرط نادرست باشد. وقتی شرط درست شد از حلقه خارج می شود.

زیر خصوصی Constant_demo_Click() i = 10 انجام دهید تا i>15 "شرط نادرست است. از این رو حلقه i = i + 1 msgbox اجرا می شود ("مقدار i است: " & i) Loop End Sub

هنگامی که کد بالا اجرا می شود، خروجی زیر را در یک جعبه پیام چاپ می کند.

مقدار i برابر با 11 است
مقدار i برابر با 12 است
مقدار i برابر با 13 است
مقدار i برابر با 14 است
مقدار i برابر با 15 است
مقدار i برابر با 16 است

نحو جایگزین

یک نحو جایگزین نیز وجود دارد، Do... Before Loop، که شرایط را در انتهای حلقه آزمایش می کند. تفاوت اصلی بین این دو نحو با مثال زیر توضیح داده شده است.

انجام ... ... حلقه تا شرط

نمودار جریان

مثال

مثال زیر از Do...Before یک حلقه برای آزمایش یک شرط در انتهای حلقه استفاده می کند. دستورات درون یک حلقه حداقل یک بار اجرا می شوند، حتی اگر شرط True باشد.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 msgbox "مقدار i است: " & i Loop Until i more15 "شرط True است. بنابراین حلقه یک بار اجرا می شود. پایان Sub

هنگامی که کد بالا اجرا می شود، خروجی زیر را در یک جعبه پیام چاپ می کند.

مقدار i برابر با 11 است

دستورات do..Until تا زمانی که شرط False باشد اجرا می شود. (یعنی) حلقه باید تا زمانی که شرط درست باشد تکرار شود.

سوابق کنترل چرخه

دستورات کنترل حلقه اجرا را از توالی عادی خود تغییر می دهند. هنگامی که اجرا از محدوده خارج می شود، تمام دستورات حلقه دیگر اجرا نمی شوند.

بیانیه کنترل و توضیحات

خروجی اپراتور

Exit for زمانی استفاده می شود که بخواهیم بر اساس معیارهای خاصی از حلقه For خارج شویم. هنگامی که Exit For اجرا می شود، کنترل بلافاصله پس از حلقه For به دستور بعدی منتقل می شود.

نحو

در زیر دستور Exit For Statement در VBA آمده است.

نمودار جریان

مثال

مثال زیر از Exit For استفاده می کند. اگر شمارنده به 4 برسد، حلقه For به پایان می رسد و کنترل بلافاصله پس از حلقه For به دستور بعدی منتقل می شود.

Private Sub Constant_demo_Click() Dim a As Integer a = 10 برای i = 0 به مرحله 2 "i متغیر شمارنده است و 2 MsgBox افزایش می یابد ("مقدار i است: " & i) اگر i = 4 سپس i = i * 10 "این فقط در صورتی اجرا می شود که i=4 MsgBox ("مقدار i است: " & i) خروج برای "خروج زمانی که i=4 پایان می یابد اگر زیر پایان بعدی

هنگامی که کد بالا اجرا می شود، خروجی زیر را در کادر پیام چاپ می کند.

مقدار i است: 0
مقدار i است: 2
مقدار i است: 4
مقدار i است: 40

دستور حلقه For را خاتمه می دهد و اجرا را بلافاصله بعد از حلقه به دستور منتقل می کند

از Do خارج شوید

Exit Do Statement زمانی استفاده می شود که بخواهیم بر اساس معیارهای خاصی از Do Loops خارج شویم. می توان از آن در هر دو حلقه Do Do...While و Do...Before استفاده کرد.

هنگامی که Exit Do اجرا می شود، کنترل بلافاصله پس از حلقه Do به دستور بعدی منتقل می شود.

نحو

در زیر دستور Exit Do در VBA آمده است.

مثال

مثال زیر از Exit Do استفاده می کند. اگر شمارنده به 10 برسد، خط خروجی Do خاتمه می یابد و کنترل بلافاصله پس از حلقه For به دستور بعدی منتقل می شود.

Private Sub Constant_demo_Click() i = 0 Do while i<= 100 If i >10 سپس از Do خارج شوید " حلقه خارج می شود اگر i>10 پایان اگر MsgBox ("مقدار i است: " & i) i = i + 2 حلقه پایان فرعی

هنگامی که کد بالا اجرا می شود، خروجی زیر را در یک جعبه پیام چاپ می کند.

مقدار i برابر با 0 است
مقدار i این است: 2
مقدار i برابر است با 4
مقدار i برابر است با: 6
مقدار i برابر با 8 است
مقدار i برابر است با 10

دستور Do while را تکمیل می کند و اجرا را بلافاصله بعد از حلقه به دستور منتقل می کند

کار آزمایشگاهی روی مبانی برنامه نویسی

2.1. جدول توابع نشان داده شده به صورت تحلیلی
و در نزدیکی همگرایی

هدف کار

· تجمیع دانش نظری در مبانی سازماندهی ساختارهای شاخه ای و چرخه ای.

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

سه نوع دستور حلقه در VB وجود دارد:

چرخه شمارش: برای...تا...بعد

حلقه های با پیش شرط: Do while...Loop,Do Until...Loop,When...WEnd

· حلقه های با شرط پست: Do...Loop while، Do...Loop Until.

حلقه شمارش - به شما اجازه می دهد تا در مجموعه ای از عبارات به تعداد مشخصی بارها بچرخید. نحو آن به شرح زیر است:

برای پیشخوان = شروع کنیدبه پایان

[اپراتورها]

[اپراتورها]

بعد [ پیشخوان]

پارامتر پیشخوانیک متغیر عددی (عدد صحیح، نوع واقعی یا تاریخ، متغیر، نوع ارز) است که پس از هر تکرار به طور خودکار افزایش می یابد. مقدار اولیه پیشخوانبرابر با پارامتر شروع کن،و پارامتر نهایی - پایان.اگر مشخص نشده باشد، مرحله برابر با 1 در نظر گرفته می شود؛ مقدار گام را می توان تغییر داد. می تواند یک عدد مثبت یا منفی باشد.

چهار ساختار نحوی از Do....Loop وجود دارد:

عبارات بین کلمات کلیدی Do... Loop بسته به شرایط، تعداد دفعات مشخصی اجرا می شوند. به عنوان مثال، در قطعه برنامه زیر، زمانی که C = 100، شرط برآورده می شود و حلقه وارد می شود. در داخل حلقه، رویه فراخوانی می شود و مقدار C به میزان 1 کاهش می یابد. سپس مجدداً شرط (C > 0) بررسی می شود و عملگرهای حلقه دوباره اجرا می شوند (در مجموع 100 بار اجرا می شوند) تا C = 0. وقتی شرط C > 0 نادرست شد و حلقه متوقف شد.

در حالی که C > 0 را انجام دهید

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

در این حالت، حلقه تا زمانی اجرا می شود که شرط False باشد، برخلاف حالت قبلی، یعنی ادامه می یابد. قبل ازتحقق شرط C = 0.

دستورات حلقه 3 و 4 از نظر نحوی بسیار شبیه به دو مورد اول هستند به جز اینکه شرط نهتا زمانی که حلقه حداقل یک بار اجرا شود محاسبه می شود.

این سینتکس های حلقه می توانند از دستورات خروج بدون قید و شرط حلقه Exit For و Exit Do برای انتقال کنترل به اپراتور پشت حلقه استفاده کنند. به عنوان مثال، در قطعه برنامه زیر، اگر مقدار اولیه C > 50 باشد، حلقه بلافاصله متوقف می شود.



انجام دهید تا C<= 0

MsgBox "شروع" مقدار بیشتر از حد قابل قبول است، "خطای ورودی"

حلقه while...Wend در نسخه های اولیه ویژوال بیسیک استفاده می شد. نحو آن به شرح زیر است:

در حالی که<условие>

<Операторы>

برخلاف حلقه Do..Loop، حلقه while ..Wend گزینه دومی ندارد که در آن شرط در انتهای حلقه بررسی شود. علاوه بر این، هیچ عبارت خروج حلقه ای مانند Exit Do برای آن وجود ندارد.

VBA. سازماندهی چرخه ها

عبارات حلقه برای تکرار یک عمل یا گروهی از اقدامات به تعداد مشخص استفاده می شود. تعداد تکرارها (تکرار حلقه) را می توان از پیش تعیین یا محاسبه کرد.

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

  1. حلقه هایی با تعداد تکرار ثابت ( حلقه های مقابله شده).
  2. حلقه هایی با تعداد نامحدود تکرار ( حلقه های شرطی).

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

چرخه های ثابت

VBA دو ساختار کنترلی را برای سازماندهی یک حلقه ثابت ارائه می دهد: برای ... بعدی (حلقه با شمارنده) و برای هر ... بعدی (حلقه با یک شمارش).

اپراتور برای... بعدی این یک حلقه شمارنده معمولی است که تعداد مشخصی از تکرارها را اجرا می کند. نحو عبارت For...Next این است:

برای<счетчик> = <начЗначение>که<конЗначение>

<блок операторов>

بعد [<счетчик>]

نمونه ای از استفاده از عملگر For...Next.

فهرست 1. برای … اپراتور بعدی

وظیفه: برنامه ای ایجاد کنید که دو عدد را از کاربر دریافت کند.

همه اعداد را در محدوده مشخص شده توسط این دو عدد اضافه می کند و سپس

مقدار حاصل را نشان می دهد.

نمونه فرعی 7()

Dim i به عنوان شمارنده چرخه عدد صحیح

Dim sStart 'مقدار شمارنده اولیه

مقدار شمارنده پایانی sEnd را کم رنگ کنید

Dim sSum As Long 'sum جمع

sStart = InputBox ("اولین عدد را وارد کنید:")

sEnd = InputBox ("عدد دوم را وارد کنید:")

sSum = 0

برای i = CINT(sStart) به CINT(sEnd)

sSum = sSum + i

بعدی منم

MsgBox "مجموع اعداد از " & sStart & " تا " & sEnd & " عبارتند از: " & sum

پایان فرعی

عبارت حلقه برای هر...بعدیبه دسته عملگرهای نوع شی تعلق دارد، یعنی. در درجه اول برای مجموعه ها اعمال می شوداشیاء و همچنین آرایه ها . بدنه حلقه به تعداد ثابتی بارها اجرا می شود که مربوط به تعداد عناصر موجود در آرایه یا مجموعه است. برای هر... فرمت بیانیه بعدی:

برای هر<элемент>که در<группа> <блок операторов>بعد [<элемент>]

حلقه های شرطی (حلقه های تعریف نشده)

حلقه های شرطی زمانی استفاده می شوند که اقدامات مکرر فقط در شرایط خاصی انجام شوند. تعداد تکرارها تعریف نشده است و به طور کلی می تواند برابر با صفر باشد (به ویژه برای حلقه های دارای پیش شرط). VBA چندین ساختار کنترلی را برای سازماندهی حلقه های شرطی به توسعه دهندگان ارائه می دهد:

  • چهار نوع Do..Loop که در نوع شرایط بررسی شده و مدت زمان لازم برای تکمیل این بررسی متفاوت است.
  • حلقه پیوسته در حالی که ... Wend.

حلقه Do while... معمولی است حلقه با پیش شرط. این شرط قبل از اجرای بدنه حلقه بررسی می شود. چرخه تا آن زمان به کار خود ادامه می دهد<условие>اجرا می شود (یعنی مقدار True را دارد). از آنجایی که بررسی در ابتدا انجام می شود، ممکن است بدنه حلقه هرگز اجرا نشود. Do while... Loop Format:

انجام در حالی که<условие>

<блок операторов>

حلقه

لیست 2. Do while... Loop

وظیفه: برنامه ای ایجاد کنید که به ورودی کاربر نیاز دارد

یک دنباله دلخواه از اعداد ورودی باید خاتمه یابد

فقط پس از اینکه مجموع اعداد فرد وارد شده از 100 تجاوز کند.

نمونه فرعی 8()

Dim OddSum به عنوان عدد صحیح "مجموع اعداد فرد".

Dim OddStr به عنوان رشته «رشته ای با اعداد فرد».

Dim Num برای پذیرش اعداد وارد شده

OddStr = "" ' مقدار دهی اولیه رشته خروجی

OddSum = 0 'OddSum را راه اندازی کنید

Do while OddSum< 100 ‘начало цикла

Num = InputBox ("عددی را وارد کنید:")

اگر (Num Mod 2)<>0 سپس «بررسی برابری».

OddSum = OddSum + Num 'انباشته مجموع اعداد فرد

OddStr = OddStr & Num & ”

پایان اگر

حلقه

یک رشته با اعداد فرد چاپ کنید

MsgBox prompt:=”اعداد فرد: ” & OddStr

پایان فرعی

انجام ... Loop while عبارتبرای سازمان طراحی شده استحلقه با شرط پست. این شرایط پس از اینکه بدنه حلقه حداقل یک بار اجرا شد بررسی می شود. چرخه به کار خود ادامه می دهد تا اینکه<условие>صادق باقی می ماند. انجام ... Loop while Format:

انجام دادن<блок операторов>حلقه در حالی که<условие>

فهرست 3. حلقه با postcondition

وظیفه: یک برنامه برای بازی "حدس بزنید عدد" ایجاد کنید. برنامه باید تصادفی باشد

روشی برای تولید عددی در محدوده 1 تا 1000، کاربر باید

این عدد را حدس بزنید برنامه برای هر عدد وارد شده یک راهنمایی نمایش می دهد

' "کم و بیش، تقریبا".

نمونه فرعی 8()

Randomize Timer 'تولید کننده اعداد تصادفی را راه اندازی کنید

پیام کم نور به عنوان رشته پیام

تیره SecretNumber به عنوان طولانی، UserNumber به عنوان متغیر

شروع: SecretNumber = Rnd (Rnd * 1000) ' عدد تولید شده توسط کامپیوتر

UserNumber = عدد خالی که توسط کاربر وارد شده است

بازی را انجام دهید

Case True را انتخاب کنید

Case IsEmpty(UserNumber): msg = "یک عدد را وارد کنید"

Case UserNumber > SecretNumber: msg = "خیلی زیاد!"

شماره کاربری مورد< SecretNumber: msg = “Слишком мало!”

پایان انتخاب کنید

UserNumber = InputBox (prompt:=msg, Title:=”عدد را حدس بزنید”)

Loop while UserNumber<>SecretNumber

' معاینه

اگر MsgBox («دوباره پخش شود؟»، vbYesNo + vbQuestion، «حدس زدید!») = vbYes سپس

GoTo Begin

پایان اگر

پایان فرعی

Loops Do Until... Loop and Do... Loop Until وارونگی حلقه های شرطی قبلاً مورد بحث است. به طور کلی، آنها به طور مشابه کار می کنند، با این تفاوت که اگر شرط نادرست باشد، بدنه حلقه اجرا می شود (به عنوان مثال.<условие>=نادرست). انجام دهید تا ... قالب حلقه:

انجام دهید تا<условие> <блок операторов>حلقه

انجام ... Loop Until قالب حلقه:

<блок операторов>

حلقه تا<условие>

کار عملی:برنامه های فهرست 10 و 11 را با استفاده از عبارات حلقه معکوس بازنویسی کنید.

Loop while...Wend همچنین برای حلقه های شرطی اعمال می شود. این اپراتورکاملاً با ساختار Loop Do while... سازگار است. در حالی که...فرمت حلقه Wend:

در حالی که<условие>

<блок операторов>

وند

ویژگی بارز این اپراتور عدم امکان پذیری آن است فسخ اجباری(قطع کردن) بدنه حلقه (عبارت Exit Do در حلقه while ... Wend کار نمی کند).

قطع کردن یک چرخه

برای پایان دادن به یک تکرار و خروج از حلقه، از دستور Exit استفاده می شود. این عملگر در هر ساختار چرخه ای به جز while... Wend قابل اجرا است. نحو کلی برای استفاده از Exit برای شکستن یک حلقه به شرح زیر است:

<начало_цикла>

[<блок операторов1>]

خروج (برای | انجام)

[<блок операторов2>]

<конец_цикла>

هنگامی که دستور Exit اجرا می شود، حلقه قطع می شود و کنترل به دستور بعد از دستور منتقل می شود.<конец_цикла>. ممکن است چندین دستور خروج در بدنه یک حلقه وجود داشته باشد.

فهرست 4. خروج اجباری از حلقه

نمونه فرعی9()

برای i = 1 تا 10000000

اگر i = 10 است، سپس Exit For ' وقتی شمارنده به 10 رسید از حلقه خارج شوید

بعد




بالا