عملکرد اگر در VBA یکی از پر کاربردترین عبارات است. عملکرد IF بررسی می کند که آیا شرط تعیین شده برآورده می شود یا خیر. عملکرد IF در VBA کمی متفاوت از نحوه کار در Excel کار می کند. در اکسل ، تابع IF دو کار انجام می دهد: این بررسی می کند که آیا شرایط داده شده به TRUE یا FALSE ارزیابی می شود یا خیر و سپس مقداری را برای استفاده بر اساس ارزیابی یعنی IF برمی گرداند ( شرط ، مقدار_برگردانی_و_شروط_واقع ، مقدار_تردد_اگر_شروط_کذب) با این حال ، عملکرد IF در VBA فقط قسمت اول را انجام می دهد ، یعنی بررسی کنید که آیا این شرایط به TRUE یا FALSE ارزیابی می شود. مراحل انجام هر یک از سناریوها همانطور که با استفاده از دستور اضافی THEN مشخص شده است.

استفاده از یک عملکرد ساده IF در VBA

در اینجا مثالی از عملکرد اگر... این قطعه کد VBA به سادگی بررسی می کند که آیا شرایط مشخص شده (به عنوان مثال 1\u003e 4) به TRUE یا FALSE ارزیابی می شود. در این حالت ، ما فقط مراحل مشخص شده برای تکمیل شرایط را ارزیابی کرده ایم. در این حالت ، نتیجه در صفحه نمایش نشان داده می شود. اگر عملکرد برای FALSE ارزیابی شود ، کد VBA هیچ کاری نمی کند.

1
2
3
4
5

زیر IF_FUNCTION ()
اگر 7\u003e 1 سپس
MsgBox "7 بزرگتر از 1"
اگر پایان دهید
پایان بخش

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

تابع IF معمولاً با یک اعلامیه END IF به پایان می رسد که به برنامه اجازه می دهد تا متوجه شود آخرین خط تابع IF است. در زیر فرم مختصری از عملکرد IF آورده شده است. توجه داشته باشید که دستور END IF در این حذف شده است و بنابراین سه خط کد در یک ادغام شده است.

زیر IF_FUNCTION_SHORT ()
اگر 7\u003e 1 سپس MsgBox "7 بزرگتر از 1" است
پایان بخش

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

استفاده از یک عملکرد IF با ELSE در VBA

در مثالی که در بالا آورده شد ، دیدیم که عملکرد IF فقط در صورت ارزیابی شرایط به صورت TRUE قادر به انجام مراحل است. اما اگر بخواهیم مراحل انجام هر یک از شرایط را مشخص کنیم چه می کنیم. یکی از راه های دستیابی به انشعاب از عملکرد IF استفاده از دستور ELSE است. به عبارت ساده ، عبارت ELSE باعث می شود برنامه هنگامی که شرط مشخص شده در بند IF به FALSE ارزیابی می شود ، مراحل ذکر شده در بلوک ELSE را اجرا کند.

در مثال کد VBA در زیر ، شرایط موجود در عملکرد IF نادرست ارزیابی می شود ، مراحل ذکر شده در بلوک ELSE با نتیجه نمایش پیام "1 از 4 کمتر است" بر روی صفحه نمایش اجرا می شود. چندین مرحله را می توان به بلوک اضافه کرد تا همه آنها یکی پس از دیگری اجرا شوند.

1
2
3
4
5
6
7

زیر IF_ELSEIF_FUNCTION ()
اگر 1\u003e 4 باشد

دیگر:
MsgBox "1 کمتر از 4 است"
اگر پایان دهید
پایان بخش

استفاده از یک عملکرد IF با ELSEIF و ELSE: در VBA

بیانیه ELSE ممکن است توسط بیانیه های ELSEIF پشتیبانی شود. آنها معمولاً برای بررسی شرایط خاص استفاده می شوند و اگر همه آنها نادرست ارزیابی کنند ، مراحل مشخص شده در شرایط ELSE سرانجام اجرا می شوند. دستور IF شرایط مشخصی را بررسی می کند. اگر آن شرط نادرست باشد ، شرط مشخص شده در اولین بیانیه ELSEIF بررسی می شود. اگر این نیز نادرست باشد ، شرط مشخص شده در بیانیه دوم ELSEIF بررسی خواهد شد ، و غیره و غیره. اگر همه شرایط مشخص شده در عبارات IF و ELSEIF نادرست باشد ، به طور پیش فرض مراحل ذکر شده در بلوک ELSE: اجرا می شود. لطفاً بخاطر بسپارید که اگر چندین عبارت ELSEIF وجود داشته باشد ، اولین جمله ای که به TRUE ارزیابی می شود ، اجرا می شود و پس از تکمیل ، اجرای کد به عبارت END IF منتقل می شود. حتی اگر چندین شرایط ELSEIF وجود داشته باشد که به TRUE ارزیابی می شود ، فقط اولین موردی که به TRUE ارزیابی می شود اجرا می شود.

1
2
3
4
5
6
7
8
9
10
11


اگر< \u003e سپس
MsgBox "1 بزرگتر از 4"
اگر دیگر< \u003e سپس

اگر دیگر< \u003e سپس

دیگری< >:

اگر پایان دهید
پایان بخش

در مثالی که در زیر نشان داده شده است ، ابتدا شرایط IF بررسی می شود. از آنجا که به FALSE ارزیابی می شود ، اولین شرط ELSEIF ارزیابی می شود و پس از آن دومین مورد ارزیابی می شود. از آنجا که هیچ یک از آنها TRUE را ارزیابی نمی کنند ، مراحل ذکر شده در شرط ELSE اجرا می شوند.

1
2
3
4
5
6
7
8
9
10
11

زیر IF_ELSEIF_ELSE_FUNCTION ()
اگر 1\u003e 4 باشد
MsgBox "1 بزرگتر از 4"
ElseIf 2\u003e 4 سپس
MsgBox "2 بزرگتر از 4" است
ElseIf 3\u003e 4 سپس
MsgBox "3 بزرگتر از 4"
دیگر:
MsgBox "1 ، 2 یا 3 کمتر از 4"
اگر پایان دهید
پایان بخش

نکته سریع - چگونه کاری کنیم که دستورات IF سریعتر کار کنند

هر دو قطعه کد مشابه به نظر می رسند. دو شرط ELSEIF در عملکرد دوم عوض شده است. به نظر شما کدامیک از قطعات زیر کد VBA سریعتر اجرا می شود:
اگر پایان دهید
بعدی منم
MsgBox Timer - t
پایان بخش

پاسخ این است که مورد دوم بسیار سریعتر از مورد اول اجرا می شود. چرا؟ زیرا مورد دوم قبل از یافتن شرطی که برای TRUE ارزیابی شود ، باید از خطوط کد کمتری عبور کند. به یاد داشته باشید که اولین شرط ELSEIF که اگر TRUE پیدا شود اجرا می شود و هیچ یک از شرایط دیگر ارزیابی نمی شود ، حتی اگر آنها نیز به TRUE ارزیابی شوند. در قطعه اول کد VBA ، عملکرد ELSEIF در خط 6 به TRUE ارزیابی می شود در حالی که در قسمت دوم ، خط 5 با معیارها مطابقت دارد. در اصل ، هرچه احتمال ارزیابی شدن به TRUE بیشتر باشد ، باید آن را زودتر در کد VBA قرار دهید ، همه موارد دیگر یکسان است.

اپراتورهای پایه VBA

نظرات (0)

3.1 قوانین ضبط اپراتور

هنگام ضبط اپراتورها ، باید به قوانین زیر عمل کنید:

هر عبارت جدید روی یک خط جدید نوشته می شود.

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

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

3.2 اپراتور واگذاری

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

نام متغیر= اصطلاح

ابتدا عبارت سمت راست ارزیابی شده و سپس نتیجه به متغیر سمت چپ اختصاص می یابد.

برای مثال... با استفاده از عملگر انتساب عبارت ریاضی زیر را بنویسید:

در VBA ، این عبارت را می توان به عنوان عملگر زیر نوشت:

Y \u003d a ^ (1/3) + (a ^ 2 + Exp (-b)) / (Sin (a) ^ 2-Log (b))

3 .3 اپراتورهای ورودی و خروجی

3 .3.1. عملگر و عملکرد MsgBox

اپراتور MsgBox خروجی اطلاعات را در جعبه محاوره انجام می دهد و حالت انتظار برای فشار دادن دکمه توسط کاربر را تنظیم می کند.

نحو زیر را دارد:

MsgBox پیام [، دکمه ها] [، عنوان]

استدلال ها:

پیام - استدلال مورد نیاز با مشخص کردن پیام اطلاعاتی در پنجره نمایش داده می شود. می تواند از چندین خط متن تشکیل شده باشد که توسط یک علامت بهم پیوسته است & ... کاربرد در این استدلال Chr (13) هنگام نمایش اطلاعات منجر به ایجاد خط جدیدی می شود.

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

عنوان - عنوان پنجره را تنظیم می کند.

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

جدول 3.1 مقادیر معتبر برای یک متغیر دکمه

نمایش دادن

بحث و جدل

دکمه تأیید

دکمه های OK و Cancel

دکمه های Yes و No

بله ، دکمه های خیر و لغو

دکمه های Stop ، Redo و Ignore را لمس کنید

VbAbortRetry نادیده بگیرید

دکمه های Redo و Cancel.

علامت اطلاعات

علامت سوال

علامت تعجب

برای مثال... پیامی درباره تاریخ فعلی نمایش دهید.

MsgBox "امروز در تقویم است" و تاریخ ، "توجه"

در نتیجه ، پنجره زیر نمایش داده می شود (شکل 3.1).

پس از کلیک بر روی دکمه تأیید ، کادر پیام بسته می شود و اجرای برنامه از دستور بلافاصله پشت تماس با MsgBox از سر گرفته می شود.

3.3.2. تابع InputBox

تابع InputBoxمقادیر متغیرها را با استفاده از پنجره ورودی وارد می کند و دستور زیر را دارد:

نام متغیر = InputBox (پیام [، عنوان] )

استدلال ها:

پیام - استدلال لازم یک پیام اطلاعاتی در پنجره تنظیم می کند ، که معمولاً معنای مقدار وارد شده را توضیح می دهد

عنوان - عنوان پنجره را تنظیم می کند.

برای مثال، مقدار متغیر N را از صفحه کلید با پیش فرض 10 وارد کنید.

برای این کار می توانید از عملگر زیر استفاده کنید:

N \u003d InputBox ("ورودی N" ، "ورودی داده های اولیه" ، 10)

در نتیجه ، پنجره زیر برای وارد کردن مقدار متغیر N نمایش داده می شود (شکل 3.2).

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

اگر مقدار پیش فرض با کاربر مطابقت ندارد ، قبل از کلیک بر روی دکمه تأیید ، باید مقدار مورد نظر را برای متغیر N وارد کنید.

3 .4 بیانیه شرطی اگر

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

اگروضعیت سپسOPERATOR_1 ElseOPERATOR_2

OPERATOR_1 اگر اجرا شود وضعیتدرست است ، در غیر این صورت اعدام شد OPERATOR_2. در این حالت ، جمله If… Then Else در یک خط نوشته می شود.

وضعیت یک عبارت بولی است نتیجه یک عبارت همیشه بولی است. بیان می تواند ساده یا پیچیده باشد. هنگام نوشتن شرایط ساده ، می توان از همه عملکردهای احتمالی رابطه مندرج در جدول 1 استفاده کرد. 3.2

جدول3 .2 رابطه منطقی

عمل

نام

اصطلاح

نتیجه

اگر A برابر B باشد درست است

اگر A برابر B نباشد درست است

اگر A بزرگتر از B باشد درست است

اگر A کمتر از B باشد درست است

بیشتر یا مساوی

اگر A بزرگتر یا مساوی با B باشد درست است

کمتر یا مساوی با

اگر A کمتر از B باشد یا برابر آن باشد ، درست است

شرایط پیچیده از شرایط ساده با استفاده از عملیات منطقی و پرانتز شکل می گیرد. لیست عملیات منطقی در جدول آورده شده است. 3.3

جدول3 .3 عملیات منطقی

نام

اصطلاح

نتیجه

منطقی
نفی

منطقی و

منطقی یا

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

اگروضعیت سپس

OPERATOR_BLOCK_1

OPERATOR_BLOCK_2

پایان منf

چندین شرط را می توان در یک عبارت شرطی بررسی کرد. در این حالت ، عملگر مشروط:

اگرCONDITION_1 سپس

OPERATOR_BLOCK_1

اگر دیگرCONTITION_2سپس

OPERATOR_BLOCK_2

دیگری

پایاناگر

مثال 1... بخشی از برنامه را برای الگوریتم در شکل بنویسید. 3.3

مثال 2 بخشی از برنامه را برای الگوریتم در شکل بنویسید. 3.4

3.5. عبارت Case را انتخاب کنید

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

انتخاب مورد TESTED_EXPRESSION

مورد VALUES_1

OPERATORS_1

مورد ارزش های_ 2

اپراتورها_ 2

. . .

مورد VALUES_N

اپراتورها

[ مورددیگری

دیگر_ اپراتورها]

پایان انتخاب

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

یک نوع ارزش های باید با نوع آن مطابقت داشته باشد TESTED_EXPRESSION.

اول ، محاسبه شده TESTED_EXPRESSION... اگر مقدار آن با یکی از مقادیر مطابقت داشته باشد VALUES_I، سپس OPERATORS_I پایان انتخاب... اگر مقدار آن با هیچ یک از مقادیر مطابقت ندارد VALUES_I، سپس OTHERWISE_OPERATORS و کنترل به اپراتور ایستاده پس از آن منتقل می شود پایان انتخاب

برای مثال. بخشی از برنامه را برای الگوریتم در شکل بنویسید. 3.5 که مقدار متغیر S را بسته به مقدار متغیر n تعیین می کند.

3.6 حلقه اپراتورها

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

برایCOUNTER \u003d START_VALUE تیایCON_VALUE گامگام

بلوک عملیاتی

بلوک عملیاتی

بعدپیشخوان

حلقه For… Next روی مقادیر متغیر تکرار می شود پیشخوان، که یک پارامتر از چرخه است ، از ابتدا تا مقدار پایان با مرحله مشخص تغییر. این تضمین می کند که مجموعه عبارات بدنه حلقه در هر مقدار جدید شمارنده اجرا می شود. اگر گامگامدر ساخت وجود ندارد ، سپس به طور پیش فرض فرض می شود که مرحله 1 باشد. طبق گفته اپراتور خروج برایقبل از این می توانید از دستور حلقه خارج شوید پیشخوانبه آخرین مقدار می رسد. *

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

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

مسدود کردن_ اپراتورها

بلوک عملیاتی

بعدعنصر

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

حلقه های با پیش شرط - انجام دادندر حالی کهحلقه,

انجام دادنتا زمانحلقه;

حلقه با شرط پس - انجام دادنحلقهدر حالی که,

انجام دادنحلقهتا زمان.

دستور زیر این دستورات حلقه است:

"حلقه با پیش شرطانجام دادن در حالی که حلقه

انجام در حالی کهوضعیت

بلوک عملیاتی

بلوک عملیاتی

"حلقه با پیش شرطانجام دادن تا زمان حلقه

انجام دادنتا زمانوضعیت

بلوک عملیاتی

بلوک عملیاتی

"حلقه با شرط بعدانجام دادن حلقه در حالی که

مسدود کردن_ اپراتورها

بلوک عملیاتی

حلقه در حالی کهوضعیت

"حلقه با شرط بعدانجام دادن حلقه تا

مسدود کردن_ اپراتورها

بلوک عملیاتی

حلقه تاوضعیت

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



اخبار دیگر

اپراتور شرطی

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

در VBA دو نوع عملگر شرطی وجود دارد: خطی و بلوک.

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

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

ساختار اپراتور شرطی غیرقابل رقابت (مختصر):

اگر<условие> سپس<оператор 1>

ساختار اپراتور شرطی جایگزین (نسخه کامل):

اگر<условие> سپس<оператор 1> دیگری<оператор 2>

جایی که

اگر ، پس ، دیگر - کلمات رزرو شده (اگر ، در غیر این صورت)

<условие> - یک عبارت دلخواه از یک نوع منطقی ؛

<оператор 1>, <оператор 2> - هر عملگر زبانVBA

کار. ابتدا عبارت شرطی ارزیابی می شود<условие>... اگر نتیجه ای حاصل شوددرست است، واقعی (درست) ، پس<оператор 1>، و<оператор 2> رد شد اگر نتیجه ای حاصل شودنادرست (نادرست) ، برعکس ،<оператор 1> رد شد اما اعدام شد<оператор 2>.

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

ساختار اپراتور بلوک غیرقابل رقابت (مختصر نویسی))

اگر<условие> سپس

<оператор1>

<оператор2>

…………….

<оператор n >

اگر پایان دهید

جایی که

اگر پایان دهید - پایان بلوک عبارت را نشان می دهداگر

ساختار عملگر بلوک جایگزین:

اگر<условие> سپس

<оператор1>

<оператор2>

…………….

<оператор n >

دیگری

<оператор1>

<оператор2>

…………….

<оператор n >

اگر پایان دهید

مثال 1

فرمول بندی مسئله. یک روش سفارشی برای محاسبه معادله فرم در یک ماژول استاندارد ایجاد کنیدax 2 + bx + c \u003d 0.

1. داده های اولیه:

a ، b ، c  R

نتیجه: x1 ، x2  R.

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

زیرمجموعه خصوصی ()

a \u003d InputBox ("a \u003d" ، a)

b \u003d InputBox ("b \u003d" ، b)

c \u003d InputBox ("c \u003d" ، c)

d \u003d b ^ 2 - 4 * a * c

اگر d\u003e \u003d 0 سپس

x1 \u003d (-b + Sqr (d)) / (2 * a)

x2 \u003d (-b - Sqr (d)) / (2 * a)

MsgBox (x1)

MsgBox (x2)

دیگری

MsgBox ("بدون راه حل")

اگر پایان دهید

پایان بخش

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

عبارات IF می توانند درون یکدیگر قرار بگیرند. چنین لانه سازی اپراتور زمانی استفاده می شود که شما نیاز به بررسی شرایطی دارید که شرایط دیگری درست باشد.

قالب اپراتور تو در تواگر:

اگر<условие1> سپس

اگر<условие2> سپس

<оператор1>

<оператор2>

…………….

<оператор n >

دیگری

<оператор1>

<оператор2>

…………….

< оператор n>

اگر پایان دهید

اگر پایان دهید

مثال 2

فرمول بندی مسئله. برای یافتن حداکثر در بین سه عدد داده شده ، یک تابع سفارشی ایجاد کنیدy 1 \u003d a + 2 * b ؛ y 2 \u003d a * b + c ؛ y 3 \u003d c 2 + 1.

فناوری اجرای وظیفه:

1. داده های اولیه:

a ، b ، c  R

نتیجه: حداکثر  R

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

عملکرد y (a ، b ، c)

y1 \u003d a + 2 * b

y2 \u003d a * b + c

y3 \u003d c ^ 2 + 1

اگر y1\u003e y2 سپس

اگر y1\u003e y3 سپس y \u003d y1 دیگری y \u003d y3

دیگری

اگر y2\u003e y3 سپس y \u003d y2 دیگری y \u003d y3

اگر پایان دهید

عملکرد پایان

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

هنگام استفاده از عملگرهای تو در تواگر مهم است که ترکیب شرایط را اشتباه نگیرید. قاعده ای که باید به خاطر بسپارید: گزینه جایگزیندیگری متعلق به نزدیکترین اپراتور در نظر گرفته شده استاگر بدون شعبهدیگری

در VBA برای عملکرد چند اپراتور طراحی شده استاگر ... این عملگرها هنگامی استفاده می شوند که شما علاوه بر شرط اصلی باید چندین شرط دیگر را نیز در نظر بگیرید. این توسط ساخت و ساز انجام می شود:اگر… پس… ElseIf ... برخلاف عملگرهای تو در تو ، ساختار چند اپراتوراگر به شما اجازه می دهد در صورت گرفتن مقدار اولیه ، یک شرط اضافی را بررسی کنیدنادرست

قالب ضبط:

اگر<условие1> سپس

<оператор1>

اگر دیگر<условие2> سپس

<оператор2>

دیگری

<.оператор3>

پایان اگر

مثال 3

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

قوانین محاسبه کمیسیون

حجم فروش در هفته ، ص.

کمیسیون ،٪

0 تا 9999

10000 تا 19999

20،000 تا 39999

بیش از 40000

فناوری اجرای وظیفه:

1. داده های اولیه:

فروش  Z.

نتیجه: کمیسیون ر

2. یک تابع اختصاصی برای محاسبه کمیسیون در یک ماژول استاندارد ایجاد کنید:

کمیسیون عملکرد (فروش)

اگر فروش<= 9999 Then

کمیسیون \u003d فروش * 0.08

فروش ElseIf<= 19999 Then

پورسانت \u003d فروش * 0.1

فروش ElseIf<= 39999 Then

پورسانت \u003d فروش * 0.12

دیگری

پورسانت \u003d فروش * 0.14

اگر پایان دهید

عملکرد پایان

3. محاسبه کنید.

3.5.1 اپراتورهای شعبه مشروط و غیر مشروط. اپراتور اگر ... سپس ... دیگری

بررسی شرایط در VBA ، اگر ... سپس ... دستور دیگری ، تو در تو قرار گرفته است

اپراتورهای پرش مشروط برخی از مهمترین و مهمترین عناصر مورد استفاده در زبانهای برنامه نویسی هستند. اصل کلی کار آنها ساده است: انطباق با برخی شرایط بررسی می شود (صحت یا نادرستی هر عبارتی) و بسته به این ، اجرای برنامه در امتداد یک شاخه یا شاخه دیگر هدایت می شود. VBA دو عبارت شعبه مشروط ارائه می دهد: اگر… پس ... Else و Select Case.

اپراتور اگر پس از آن... Else محبوب ترین در میان برنامه نویسان است. نحو کامل آن به این شکل است:

اگر شرط باشد
تیم ها

که در آن:

  • وضعیت - عبارتی که برای حقیقت آزمایش شده است. اگر درست باشد ، دستورات 1 اجرا می شوند ، در صورت نادرست - Commands2؛
  • شرایط N - شرایط اضافی که می تواند بررسی شود. اگر آنها اجرا شوند (عبارت ConditionN درست است) ، سپس CommandsN اجرا می شوند.

عبارت If ... then ... Else اعمال می شود:

  • هنگامی که نیاز به بررسی انطباق با یک شرط دارید و در صورت انطباق ، اقداماتی انجام دهید:

اگر nTemperature باشد< 10 Then

MsgBox "ژاکت بپوش"

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

اگر nTemperature باشد< 10 Then

MsgBox "ژاکت بپوش"

MsgBox "یک ضد باد بپوش"

  • هنگامی که نیاز به بررسی انطباق با چندین شرایط دارید (توجه داشته باشید استفاده از عملگرهای منطقی):

اگر (n دما< 10) And (bRain = True) Then

MsgBox "ژاکت بپوش و چتر بردار"

  • هنگامی که ، اگر اولین چک False برگشت ، شما باید از نظر رعایت چندین شرط دیگر بررسی کنید (در این حالت استفاده از ElseIf راحت است):

اگر (bIGoInCar \u003d درست است) پس

MsgBox "لباس برای ماشین"

اگر ElseIf دما باشد< 10 Then

MsgBox "ژاکت بپوش"

MsgBox "شما می توانید پیراهن بپوشید"

در این مثال ، از آنجا که bIGoInCar یک متغیر بولی است و خود درست یا نادرست است ، خط اول ممکن است به این شکل باشد:

اگر bIGoInCar پس ...

برخی از یادداشت ها در مورد استفاده از اگر ... سپس ... دیگر:

  • کلمه کلیدی Then باید در همان خط If و شرط باشد. اگر آن را به خط بعدی منتقل کنید ، یک پیام خطا نمایش داده می شود.
  • اگر دستوری را که باید اجرا شود اگر شرط علامت گذاری شده درست باشد ، در همان خط اگر و سپس قرار دهید ، End اگر نیازی به نوشتن نیست:

اگر nTemperature باشد< 10 Then MsgBox "Одеть куртку"

  • اگر از چندین دستور یا ساختار Else / ElseIf استفاده می کنید ، باید End If را در انتها نوشت ، در غیر این صورت خطای نحوی رخ می دهد.
  • برای عبارت If… then ، اکیداً توصیه می شود که برای برجسته سازی بلوک های فرمان از تورفتگی استفاده کنید. در غیر این صورت ، خواندن کد دشوار خواهد بود.
  • اگر ... سپس عبارات را می توان درون یکدیگر قرار داد:

اگر MyVar \u003d 5 پس

MsgBox "MyVar \u003d 5"

اگر MyVar \u003d 10 پس

MsgBox "MyVar \u003d 10"

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

VBA از ساختارهای تصمیم گیری زیر پشتیبانی می کند:

اگر ... ... سپس. ... ... دیگری

6.1 سازه If. ... ... سپس

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

اگر شرط باشد ، سپس بیان کنید اگر شرط باشد ، سپس عبارت پایان اگر

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

دو عملگر زیر برابر هستند:

در صورت وجود< Now Then anyDate = Now If anyDate < Now Then anyDate = Now End If

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

در صورت وجود< Now Then anyDate = Now Timer.Enabled = False " Запретить таймер. End If

اگر شرط نادرست باشد ، دستورات بعد از کلمه کلیدی Then اجرا نمی شوند و کنترل به خط بعدی (یا خط بعد از عبارت End If در ساختار بلوک) منتقل می شود.

6.2 در صورت ساخت. ... ... سپس. ... ... دیگری

چندین بلوک از عبارات را تعریف می کند ، یکی از آنها بسته به شرط اجرا می شود:

اگر شرط 1 ، سپس عبارت 1 الزای دیگر اگر شرط 2 سپس عبارت 2. ... ... عبارت دیگر -n پایان اگر

هنگام اجرا ، شرط 1 ابتدا بررسی می شود. اگر نادرست باشد ، VBA شرط بعدی را بررسی می کند 2 و موارد دیگر ، تا زمانی که یک وضعیت واقعی پیدا کند. هنگامی که VBA آن را پیدا می کند ، بلاک مناسب عبارات را اجرا می کند و سپس کنترل را به عبارت زیر جمله End اگر منتقل می کند. این سازه می تواند شامل یک بلوک دستور Else باشد که در صورت عدم احراز شرایط ، VBA آن را اجرا می کند.

اگر ... ... سپس. ... ... ElseIf واقعاً فقط مورد خاصی از سازه If است. ... ... سپس. ... ... دیگری توجه داشته باشید که این ساختار می تواند شامل هر تعداد بلوک ElseIf یا حتی هیچ کدام باشد. بلوک Else می تواند بدون در نظر گرفتن وجود بلوک ElseIf یا برعکس ، در آن وجود داشته باشد.

مثال زیر 1 () Dim a as Single، b as Single، x as Single Dim z as Double Call read ("A1"، a) Call read ("B1"، b) Let x \u003d CSng (InputBox ("enter x"، "ورودی داده" ، 0)) اگر x<= a Then z = Sin(x) ElseIf x >\u003d b سپس z \u003d قهوهای مایل به زرد (x) دیگری: z \u003d Cos (x) پایان اگر فراخوانی شود ("C1" ، z) پایان زیر

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

6.3 ساخت مورد را انتخاب کنید

Select Case یک گزینه جایگزین برای If است. ... ... سپس. ... ... در هنگام اجرای یک بلوک متشکل از مجموعه بزرگی از دستورات ، غیر از این است. سازه Select Case قابلیتی مشابه سازه If را فراهم می کند. ... ... سپس. ... ... غیر از این ، اما وقتی چندین گزینه وجود دارد کد را خواناتر می کند.

ساختار Select Case با یک عبارت قابل آزمایش عمل می کند ، که یک بار پس از ورود به ساختار ارزیابی می شود. سپس VBA نتیجه را با مقادیر مشخص شده در عبارت های سازه مقایسه می کند. اگر مطابقت پیدا شود ، بلوک عبارت مرتبط با عبارت Case اجرا می شود:

Test_expression مورد را انتخاب کنید]]. ... ... ] پایان را انتخاب کنید

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

بیایید مثالی را برای محاسبه تابع در نظر بگیریم

مثال فرعی 2 () Const pi2 \u003d 1.57 Dim x به صورت Single Dim z به عنوان Double Let x \u003d CSng (InboxBox ("enter x"، "input data"، 0)) Case x Case -pi2 z \u003d Sin (x) Case 0 z \u003d Cos (x) Case pi2 z \u003d Tan (x) Case Else MsgBox "داده ورودی نامعتبر است!" خروج از زیر پایان انتخاب فراخوانی ("D1" ، z) پایان زیر

توجه داشته باشید که سازه Select Case هنگام وارد کردن عبارت فقط یک بار و در If را ارزیابی می کند. ... ... سپس. ... ... در غیر این صورت ، یک عبارت متفاوت برای هر عبارت Elelf ارزیابی می شود. اگر ... ... سپس. ... ... تنها در صورتی که عبارت If و هر عبارت Elelf یک عبارت را ارزیابی کنند ، می توان Else را با Select Case جایگزین کرد.