در آموزشهای قبلی با عملگرهای مقایسهای و منطقی VBA آشنا شدیم. در این بخش قصد داریم نحوه ساخت عبارتهای شرطی و منطقی را با استفاده از این عملگرها بررسی کنیم.
📑 فهرست مطالب
تعریف عبارتهای شرطی
عبارتهای شرطی برای بررسی وجود یا عدم وجود یک شرط در برنامه استفاده میشوند. این عبارتها نقش مهمی در کنترل جریان اجرای برنامه دارند، زیرا در بسیاری از موقعیتها لازم است قبل از اجرای بخشی از کد، یک شرط بررسی شود.
چرا به عبارتهای شرطی نیاز داریم؟
در اولین برنامه VBA دیدیم که مقدار واردشده توسط کاربر در InputBox را به توان ۲ رساندیم. حالا تصور کنید کاربر بهجای عدد، حرف تایپ کند. در این صورت VBA مجبور میشود دستور زیر را اجرا کند:
intCalculatedNumber = strUserInput ^ 2
چون توان رساندن یک مقدار غیرعددی امکانپذیر نیست، برنامه با خطای Type mismatch (Error 13) مواجه شده و متوقف میشود. برای جلوگیری از چنین خطاهایی باید قبل از انجام محاسبات، ورودی را با استفاده از عملگرهای مقایسهای و منطقی بررسی کنیم.
برای جلوگیری از چنین خطاهایی باید قبل از انجام محاسبات، ورودی کاربر را بررسی و اعتبارسنجی کنیم؛ این کار با کمک عبارتهای شرطی و عملگرهای مقایسهای و منطقی انجام میشود.
شرطها فقط برای جلوگیری از خطا نیستند!
هرچند یکی از مهمترین کاربردهای دستورهای شرطی جلوگیری از خطاهای رایج (مثل وارد کردن مقدار نامعتبر) است، اما هدف شرطها بسیار عمیقتر از این است.
عبارتهای شرطی در واقع پل ارتباطی بین رفتار کاربر و مسیر اجرای برنامه هستند.
شما با کمک شرطها میتوانید:
۱. کاربر را هدایت کنید تا فقط ورودیهای معتبر وارد کند. در کد زیر، اگر ورودی کاربر عدد نباشد، پیام هشدار به کاربر صادر میشود و ادامه برنامه متوقف میشود:
If Not IsNumeric(strInput) Then
MsgBox "لطفاً فقط عدد وارد کنید.", vbExclamation
Exit Sub
End If
۲. مسیر اجرای برنامه را کنترل کنید و تعیین کنید در هر حالت، چه اتفاقی بیفتد. در کد زیر، اگر عدد واردشده مثبت بود یک پیام، اگر صفر بود پیام دیگر، و اگر منفی بود پیام متفاوت به کاربر ارسال میشود:
If num > 0 Then
MsgBox "عدد مثبت است."
ElseIf num = 0 Then
MsgBox "عدد صفر است."
Else
MsgBox "عدد منفی است."
End If
۳. منطق تصمیمگیری را وارد برنامه کنید؛ مثل انتخاب بین چند گزینه، اعمال محدودیتها یا مدیریت شرایط خاص. در کد زیر، اگر مقدار متغیر operationType یکی از اعداد ۱ تا ۴ باشد، عملیات جمع، تفریق، ضرب یا تقسیم بین دو متغیر a و b انجام میشود. در غیر این صورت پیغام خطایی نمایش داده میشود.
Select Case operationType
Case 1
result = a + b
Case 2
result = a - b
Case 3
result = a * b
Case 4
result = a / b
Case Else
MsgBox "گزینه نامعتبر است."
End Select
۴. تعامل هوشمندانهتر بین کاربر و برنامه ایجاد کنید. در کد زیر، اگر مقدار واردشده خیلی بزرگ باشد، از کاربر تأییدیه گرفته میشود که آیا ادامه بدهد یا نه:
If num > 1000 Then
If MsgBox("عدد خیلی بزرگ است. ادامه بدهم؟", vbYesNo + vbQuestion) = vbNo Then
Exit Sub
End If
End If
بهعبارت دیگر، شرطها باعث میشوند برنامه شما صرفاً یک ماشین محاسبه نباشد، بلکه بتواند رفتارهای متفاوت را تشخیص دهد، تصمیم بگیرد و واکنش مناسب نشان دهد.
نقش کلیدی شرطها در الگوریتم برنامه
هر الگوریتم—از سادهترین تا پیچیدهترین—در نهایت بر اساس «شرایط» شکل میگیرد.
اگر بخواهیم کاربر و برنامه را همسو کنیم، باید برنامه بداند:
- چه زمانی ادامه دهد،
- چه زمانی هشدار دهد،
- چه زمانی خروجی دیگری نمایش دهد،
- و چه زمانی اجرا را متوقف کند.
این تصمیمها همگی با استفاده از ساختارهای شرطی مانند If…Then…Else یا Select Case اتخاذ میشوند.
بنابراین، عبارتهای شرطی هستهٔ اصلی منطق کنترل جریان در برنامهنویسی هستند؛ بدون آنها هیچ برنامهای نمیتواند هوشمند عمل کند یا با کاربر تعامل واقعی برقرار نماید.
متغیر Boolean در عبارتهای شرطی
نتیجه تمام عملگرهای مقایسهای و منطقی در VBA فقط میتواند یکی از دو مقدار True یا False باشد. بنابراین متغیرهای نوع Boolean بهترین گزینه برای ذخیره نتیجه عبارتهای شرطی هستند.
بهعنوان مثال، نتیجه عبارتهای زیر همیشه True یا False خواهد بود:
(5 > 3) ' نتیجه True
(10 = 20) ' نتیجه False
تمرین:
میتوانید خودتان عبارات شرطی مختلف را در پنجره Immediate تایپ کنید و نتیجه آنها را بهصورت آنی مشاهده کنید.
برای باز کردن پنجره Immediate در VBA از کلیدهای Ctrl + G استفاده کنید.
مثال تمرینی:
۱. تایپ کنید:
? 7 < 10
کلید Enter را بزنید و نتیجه True را ببینید.
۲. حالا عبارتهای دیگر را امتحان کنید:
? 15 = 20
? "سلام" = "سلام"
? 5 > 10 And 3 < 4
با این تمرین میتوانید رفتار عملگرهای مقایسهای و منطقی و نتیجه Boolean آنها را به صورت تعاملی و سریع مشاهده کنید.
برای مطالعه بیشتر درباره پنجره Immediate و قابلیتهای آن، میتوانید به آموزش زیر مراجعه کنید:
پنجره Immediate | آشنایی با پنجره آنی ویژوال بیسیک
ترکیب عملگرهای مقایسهای و منطقی
عملگرهای مقایسهای بهتنهایی شرایط ساده را پوشش میدهند، اما برای ساخت شرطهای پیچیدهتر میتوان از عملگرهای منطقی مانند And، Or و Not همراه با آنها استفاده کرد.
مثال ساده:
اگر بخواهیم بررسی کنیم که مقدار دو متغیر intA و intB هر دو مثبت باشند، میتوانیم از ترکیب زیر استفاده کنیم:
(intA > 0) And (intB > 0)
عبارت بالا تنها زمانی True میشود که مقدار هر دو متغیر بزرگتر از صفر باشند.
نکته: در هنگام ترکیب عملگرهای مقایسهای و منطقی، حتماً اولویت عملگرها را در نظر داشته باشید. برای افزایش خوانایی کد، توصیه میشود هنگام ساخت عبارتهای ترکیبی از پرانتز استفاده کنید.
مثال عملی ذخیره نتیجه در متغیر Boolean:
Dim i As Integer
Dim j As Integer
Dim sw As Boolean
sw = (i > 100) Or (j < -20)
در این مثال، نتیجه عبارت منطقی در متغیر sw از نوع Boolean ذخیره میشود و میتواند True یا False باشد.
تمرین تعاملی:
میتوانید خودتان ترکیب عملگرها را در پنجره Immediate تست کنید و نتیجه آن را مشاهده کنید.
- پنجره Immediate را با Ctrl + G باز کنید.
- نمونه عبارتها را تایپ کرده و Enter بزنید:
? (5 > 3) And (10 < 20) ' نتیجه True
? (5 > 10) Or (3 = 3) ' نتیجه True
? Not (7 < 2) ' نتیجه True
? (4 > 2) And Not (3 = 3) ' نتیجه False
با این تمرین، میتوانید رفتار عملگرهای منطقی و ترکیب آنها با عملگرهای مقایسهای را به صورت تعاملی مشاهده کنید.
برای مطالعه بیشتر درباره پنجره Immediate و قابلیتهای آن، میتوانید به آموزش زیر مراجعه کنید:
پنجره Immediate | آشنایی با پنجره آنی ویژوال بیسیک
جمعبندی
در این آموزش با مفهوم عبارتهای شرطی و نقش آنها در کنترل جریان اجرای برنامه آشنا شدیم. همچنین دیدیم که چگونه میتوان با استفاده از عملگرهای مقایسهای و منطقی، شرایط مختلف را بررسی کرد و نتایج True یا False را در متغیرهای Boolean ذخیره نمود. یاد گرفتیم که ترکیب این عملگرها امکان ساخت شرطهای پیچیدهتر را فراهم میکند و استفاده از پرانتزها به خوانایی و درک بهتر کد کمک میکند.
در آموزش بعدی چه میآموزید؟
در بخش بعدی از مجموعه آموزشهای رایگان VBA وارد دنیای ساختارهای تصمیمگیری میشویم. در آموزش بعدی، دستور قدرتمند If را بهطور کامل معرفی خواهیم کرد و یاد میگیریم چگونه عبارتهای شرطی ساختهشده در این درس را در قالب دستور If اجرا کنیم. همچنین با ساختارهای دیگری مانند Else، ElseIf و If تو در تو آشنا خواهید شد.
اگر میخواهید بدانید چگونه میتوان با استفاده از شرطها، مسیر اجرای برنامه را کنترل کرد، آموزش بعدی درباره دستور If را از دست ندهید.
سؤالات متداول درباره عبارتهای شرطی و منطقی در VBA
عبارتهای شرطی در VBA چه کاربردی دارند؟
عبارتهای شرطی امکان بررسی یک وضعیت خاص را در برنامه فراهم میکنند. با استفاده از این عبارتها میتوانیم مشخص کنیم که آیا بخشی از برنامه باید اجرا شود یا خیر. این موضوع برای جلوگیری از خطاها، کنترل جریان اجرای برنامه و تصمیمگیریهای منطقی ضروری است.
تفاوت عملگرهای مقایسهای و عملگرهای منطقی چیست؟
عملگرهای مقایسهای برای مقایسه دو مقدار مانند =، > یا < استفاده میشوند و نتیجه آنها True یا False است.
عملگرهای منطقی مثل And، Or و Not برای ترکیب چند شرط بهکار میروند و خروجی آنها نیز Boolean است. ترکیب این دو نوع عملگر امکان ساخت شرطهای پیچیدهتر را فراهم میکند.
چرا نتیجه عبارتهای شرطی همیشه از نوع Boolean است؟
در VBA تمام عبارتهای مقایسهای و منطقی فقط میتوانند دو مقدار True یا False تولید کنند. به همین دلیل متغیرهای Boolean بهترین گزینه برای ذخیرهسازی نتایج شرطها هستند و به بهبود خوانایی و مدیریت کد کمک میکنند.
آیا استفاده از پرانتز در عبارتهای شرطی ضروری است؟
استفاده از پرانتز همیشه اجباری نیست، اما در شرایطی که چند عملگر مقایسهای و منطقی با یکدیگر ترکیب میشوند توصیه میشود از پرانتز استفاده کنید. این کار هم خوانایی کد را افزایش میدهد و هم از بروز اشتباه ناشی از اولویت عملگرها جلوگیری میکند.
چه زمانی باید از عبارتهای شرطی استفاده کنیم؟
هر زمان که برنامه باید بر اساس یک وضعیت یا شرط خاص تصمیم بگیرد، باید از عبارتهای شرطی استفاده کنید.
برای مثال:
– بررسی اینکه ورودی کاربر یک عدد است یا خیر
– جلوگیری از خطاهای محاسباتی
– کنترل اجرای بخشهای مختلف برنامه
– تعیین مسیرهای مختلف اجرای کد
بیشتر بخوانید
Me در VBA | کاربرد کلمه کلیدی Me در VBA و برنامه نویسی شیءگرا
روال Property Get در VBA | کاربرد روال Property Get در شیءگرایی
روال Property Set در VBA | کاربرد روال Property Set در شیءگرایی
روال Property Let در VBA | شیءگرایی و کپسوله سازی داده ها در VBA
خواص کلاس در VBA | ایجاد خواص کلاس با استفاده از اعلان متغیر در VBA
کلاس و شیء در VBA | مراحل ایجاد کلاس و شیء در VBA
برنامه نویسی شیءگرا (OOP) | مقدمه ای بر روش برنامه نویسی شیءگرا