ساختار شرطی if در ویژوال بیسیک

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

ساختار شرطی if در ویژوال بیسیک برای ایجاد شرط ها مورد استفاده قرار میگیرد.

ساختار شرطی if در ویژوال بیسیک

ساختار عبارت If…Then…Else در ویژوال بیسیک

برای استفاده از ساختار شرطی If در ویژوال بیسیک میتوان از هریک از دو Syntax زیر استفاده کرد، سینتکس اول برای نوشتن دستور شرطی در یک خط میباشد که در صورت کوتاه بودن عبارات مناسب است و سینتکس دوم (Block Form Syntax) برای نوشتن دستورات شرطی تو در تو و یا تشکیل ساختارهای شرطی مفصل تر مناسب میباشد.

ساختار تک خطی اول معمولاً برای نوشتن ساختارهای شرطی کوتاه در ویژوال بیسیک مورد استفاده قرار میگیرد در حالی که Syntax دوم ساختار مفصل تری دارد، با توجه به بیشتر قابل درک بودن ساختار دوم و همچنین سهولت بیشتر در Debugging، برنامه نویسان معمولاً Block Form Syntax را ترجیح میدهند.

ساختار شرطی If در ماکرو نویسی در اکسل

شرط یا Condition

در ساختار شرطی If در ویژوال بیسیک ، Condition شرط (یا شرایط) مورد نظر برنامه نویس است، مثلاً اعداد بزرگتر از هشت!، میتوان چندین شرط را به صورت همزمان در این قسمت درج کرد، مثلاً اعداد بزرگتر از هشت و کوچکتر از سیزده. کلمات If، Then، Else، ElseIf و End IF همگی کلمات کلیدی ساختار If در ویژوال بیسیک میباشند که باید به جای خود و به درستی مورد استفاده قرار گیرند، در غیر اینصورت اجرای برنامه با خطا مواجه میشود.

برای کامل بودن ساختار If، خروجی عبارت Condition باید True یا False باشد. در صورتی که حاصل عبارت شرط برابر با Null باشد، این عبارت معادل با False قرار میگیرد.

عبارت یا Statements

در ساختار شرطی If در ویژوال بیسیک، عبارت یا Statements دستوراتی هستند که در صورت درست بودن شرط (True بودن حاصل عبارت Condition) اجرا میشوند.

اگر از Syntax اول (یک خطی) استفاده کنیم نوشتن Statement الزامی است و اگر از Block Form Syntax استفاده کنیم نوشتن Statements اختیاری میباشد، در ساختار یک خطی میتوان چند Statement را در یک خط نوشت در حالی که آنها را با Colon از هم جدا کرده ایم.

کد زیر یک ساختار شرطی If در ویژوال بیسیک با سه Statement میباشد که Syntax یک خطی را استفاده کرده است:

ساختار شرطی if در ویژوال بیسیک

کلمه ی کلیدی ElseIf و Else

اگر بخواهیم چند شرط را به صورت متوالی (و نه همزمان) اجرا کنیم، میتوانیم از کلمه ی کلیدی ElseIf در ساختار شرطی If در ویژوال بیسیک استفاده نماییم. پس از نوشتن ElseIF میتوان شرط مورد نظر را نوشت و پس از آن Statement های مربوط به آن را در خط های بعدی درج کرد.

عباراتی (Statements) که پس از Else در ساختار شرطیIf  در ویژوال بیسیک نوشته میشوند کدهایی هستند که در صورت False بودن تمام شروط قبل از آن اجرا میشوند.

لازم به ذکر است برنامه نویس میتواند به تعداد دلخواه از ElseIf در ساختار شرطی If در ویژوال بیسیک استفاده نماید، ولی تنها یک بار میتواند از Else استفاده کند. الزاماً و منطقاً Else پس از تمام ElseIf ها قرار میگیرد.

مثال استفاده از ساختار شرطی If در ویژوال بیسیک

کدهای زیر مثال هایی از ساختار If…Then…Else در ماکرو نویسی در اکسل میباشند:

ساختار شرطی if در ویژوال بیسیک

در کدهای بالا یک متغیر به نام RandomNumber تعریف شده (برای آشنایی با انواع متغیرها و روش تعریف آنها مقاله ی انواع متغیرها در ویژوال بیسیک را بخوانید) که توسط تابع Rnd() به آن عدد رندومی بین صفر و یک تعلق میگیرد، در صورتی که این عدد بالاتر از ۰٫۹ باشد، فرد خوش شانس محسوب میشود، برای اعداد بین ۰٫۵ و ۰٫۹ و همینطور اعداد کوچکتر از ۰٫۵ پیامهای متفاوتی به کاربر داده میشود، این کد را اجرا کرده و با تغییر قسمت های مختلف آن درک خود را از مطلب بالاتر ببرید.

برای آشنایی با تابع MsgBox و نحوه ی ایجاد کادر پیام برای کاربر مقاله ی” کادر پیام در ویژوال بیسیک” را مطالعه نمایید.

 

اشتراک گذاری در شبکه های اجتماعی: share on facebook share on google plus share on linkedin

۶ نظر

  1. سعید.ز

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

    1. حامد قدیمی

      سلام، بابت ابراز نظرتون تشکر میکنم، بله حتماً، خوشحال میشم سایتم براتون مفید باشه، در اینده میتونید روی این سایت به عنوان کامل ترین مرجع فارسی یادگیری ویژوال بیسیک حساب کنید، امیدوارم بتونم به این هدفم برسم.

  2. امیرحسین

    سلام
    شرط برسی کردن اینکه اگه مثلا text1.text خالی بود(یعنی هیچی داخلش ننوشت کاربر)عدد صفر داخل text1.textقرار بگیره.
    if text1.text= ?
    then
    text1.text=0
    لطفا راهنمایی کنید . گیر کردم :(

  3. ناصر

    درود و خسته نباشیدآقا حامد
    یه سلول با یه عددی که دلخواه می باشد و در ضمن متغییره میخواهیم عدد افزوده شود
    مثلا: در a3 میخوام از ۱۳۹۶ شروع کنه به اضافه کردن اعداد(شمارش اتوماتیک)
    این زمانی انجام میشه که فیلدهای دیگه که شامل نام و ش.ش و … میباشد تکمیل شوند و بخواهیم بعدی را وارد کنیم. این در حقیقت شماره پرسنلی افراد که شروعش با عددی که خودمون مشخص میکنیم.

    ممنون و تشکر

    1. حامد قدیمی

      سلام، متشکرم، من متوجه سوال شما نشدم! لطفاً توضیح بدید در چه قسمتی و برای نوشتن چه کدی مشکل دارید! متشکرم

دیدگاهتان را بنویسید؟