سبد خرید
0

محصولی در سبد خرید نیست.

بازگشت به فروشگاه

دستورات شرطی در VBA | دستور IF

دستور IF در وی بی
۵/۵ - (۷ امتیاز)

یکی از پایه ها در کدنویسی ( در هر زبان برنامه نویسی از جمله VBA ) دستورات شرطی هستند که با استفاده از اونا میتونید عملیات دلخواه خودتون رو به صورت شرطی اجرا کنید. قطعا تو اکسل هم با این شرایط برخورد کردید و از توابعی مثل تابع IF یا تابع Choose استفاده کردید. تو این آموزش میخوام دستوراتی که باعث اجرای شرطی کدها میشه رو بگم.
مهمترین دستورات شرطی تو وی بی دستور Select  Case و دستور IF در وی بی هست. هر دو این دستورات یک یا چندین شرط رو بررسی میکنند و بر اساس نتیجه آن یکسری دستورات متناسب رو اجرا میکنند.

دستور IF در وی بی (VBA)

عبارت IF … Then یک شرط رو بررسی میکنه و اگر نتیجه این بررسی مقدار True (شرط برقرار باشد) بخشی از کد رو اجرا میکنه و اگر نتیجه بررسی شرط False (شرط برقرار نباشد) بخش دیگری از کد رو اجرا میکنه. پس نتیجه اجرای دستور IF … Then اجرای یکی از بخش ها ( بخش اول که در صورت برقرار بودن شرط و یا بخش دوم که در صورت برقرار نبودن شرط نوشته شده) اجرا میشه.

ساختار کلی دستور IF … Then به صورت زیر هست:

If Condition1 Then
دستورات قابل اجرا در صورت برقرار بودن شرط اول
ElseIf Condition2 Then
دستورات قابل اجرا در صورت برقرار نبودن شرط اول و برقرار بودن شرط دوم
...
Else
دستورات قابل اجرا در صورت برقرار نبودن هیچکدام از شرایط بالا
End If

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

نکته
در ساختار یک دستور IF در وی بی شما میتونید هر چند تا که لازم باشه ElseIf داشته باشید که در صورت برقرار نبودن یک شرط، شرط بعدی رو بررسی کنه و کدهای مربوط رو اجرا کنه.

 

یک مثال از دستور IF

میخوایم رنگ سلول فعال رو بر اساس عددی که وارد میکنیم تعیین کنیم. به عنوان مثال اگر مقدار وارد شده در سلول فعال از ۵ کوچکتر باشه، رنگ سلول قرمز باشه. اگر این مقدار بین ۵ تا ۱۰ باشه رنگ سلول نارنجی و در صورتیکه مقدار بیشتر از ۱۰ باشه رنگ سلول سبز باشه.

If ActiveCell.Value < 5 Then
    ActiveCell.Interior.Color = 255  ' رنگ سلول قرمز
ElseIf ActiveCell.Value < 10 Then
    ActiveCell.Interior.Color = 49407 ' رنگ سلول نارنجی
Else
    ActiveCell.Interior.Color = 65280 ' رنگ سلول سبز
End If
نکته
دستورات ElseIf و Else اختیاری هستند و در صورتیکه نیاز ندارید میتونند از دستور IF حذف کنید.

 

تو این آموزش در مورد نحوه استفاده از دستور IF در وی بی (VBA) صحبت شد. استفاده از این دستور، حالت های بیشتری هم داره که پیشنهاد میکنم مطلبی که مایکروسافت برای این دستور نوشته رو هم بخونید.

در مورد ساختار دستور Select Case در آموزش های بعدی صحبت میکنیم.

کلیدواژه : تابع IF
134

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

دیدگاه کاربران
  • کیمیایی فر ۲۵ فروردین ۱۴۰۴ / ۱۲:۱۴ ب٫ظ

    با عرض سلام
    چرا وقتی از کد ذیل برای جستجو استفاده میکنم خطا میدهد:
    If Worksheets(“DARKHAST”).Range(“C202:AO202”) = 10300003 Then
    ولی وقتی به اینصورت استفاده میکنم خطا نمی دهد
    If Worksheets(“DARKHAST”).Range(“C202”) = 10300003 Then
    باتشکر

    • سامان چراغی ۳۰ فروردین ۱۴۰۴ / ۹:۰۸ ق٫ظ

      درود
      وقت بخیر

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

  • امید جوان ۳ فروردین ۱۴۰۳ / ۵:۰۸ ق٫ظ

    سلام
    خسته نباشید
    یک سوال داشتم
    سهتا ستون دارم برای انجام فعالیتی ،که اگه تیک زده شده ،ینی اون کار انجام شده.و برای هر سه ستون یک ضریب درنظر گرفتم ک مجموعش میشه یک.حالا میخوام دستوری بنویسم ک مثلا اگر ستون اول تیک زده شده،توی یک سلول برام بزنه مثلا ۴۰ درصد کار انجام شده.
    ممنون میشم کمکم کنید.

    • آواتار
      حسنا خاکزاد ۳ فروردین ۱۴۰۳ / ۷:۵۲ ب٫ظ

      درود بر شما
      میتونید با if انجام بدید
      میتونید هم از طریق ترکیب فرمت سل و مقدار سلول، مستقیم محاسبات رو انجام بدید. یعنی در یکی از ۳ سلول بنویسید ۴۰ بع در فرمت سل تیک بذارید. اینطوری کافیه فقط اون ۳ سلول رو جمع بزنید.

      • امید جوان ۳ فروردین ۱۴۰۳ / ۸:۰۱ ب٫ظ

        ممنونم از شما،فقط اگر لطف کنید بگید با if باید چطوری بنویسم،ممنون میشم بازم.

        • آواتار
          حسنا خاکزاد ۶ فروردین ۱۴۰۳ / ۱:۱۱ ق٫ظ

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

          =SUM((A1:C1=”a”)*A2:C2)

          مثلا اگه فونت webdings استفاده کنید و از کاراکتر a، میتونید از این فرمول استفاده کنید (بصورت ارایه ای. یعنی ctrl+shift+enter بزنید موقع ثبت)
          در محدوده A2:C2 هم ضرایب رو گذاشتیم

  • وحید ۲۲ مهر ۱۴۰۲ / ۳:۱۲ ب٫ظ

    یه برنامه تو vba اکسل نوشتم که عکس کادر را میاره
    ولی اگه کدی را بزنیم که اون کد وجود نداشته باشه error میده 

    اگه ممکن ه راهنمایی کنید
    باید یه شرط اول ش بنویسم ولی بلد نیستم

    Private Sub TextBox1_Change()
    Image1.Picture = LoadPicture(“D:\pic2\” & TextBox1.Value & “.jpg”)
    End Sub

    • آواتار
      حسنا خاکزاد ۲۲ مهر ۱۴۰۲ / ۵:۰۷ ب٫ظ

      درود
      اگه میخواید ارور نده، اول کد on error resume next رو بزنید

      • محمدرضا ۲۸ اسفند ۱۴۰۲ / ۷:۱۰ ق٫ظ

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

        • آواتار
          حسنا خاکزاد ۳ فروردین ۱۴۰۳ / ۷:۴۶ ب٫ظ

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

  • سمیه خسروی ۱۶ شهریور ۱۴۰۲ / ۱۱:۴۷ ق٫ظ

    سلام
    وقتتون بخیر
    من یه فرم ورود اطلاعات در اکسل دارم که دکمه ی ثبت اطلاعات رو که می زنم اطلاعات در یک سیت ثبت میکنه
    می خوام در فرم تاریخ بدم و اطلاعات در شیت همون تاریخ ثبت بشه
    آیا امکانش هست؟؟ ممنون میشم راهنماییم کنید ؟؟

    • آواتار
      حسنا خاکزاد ۱۶ شهریور ۱۴۰۲ / ۹:۴۷ ب٫ظ

      درود بر شما
      بله شدنی هست خب کافیه در اون خط که میگه برو در شیت ۱ مثلا ثبت کن، اسم شیت مورد نظرتون رو بنویسید

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

توسط
تومان