شماره پشتیبانی اکسل پدیا در بله: 09914083023
سبد خرید
0

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

بازگشت به فروشگاه
تمام دسته ها
  • تمام دسته ها
  • ابزارها
  • افزونه ها
  • اکسل مدیا
  • Power BI
  • Power Pivot
  • Power Query
  • توابع اکسل
  • دسته‌بندی نشده
  • دیده بان
  • گوگل شیت
  • مسائل کاربردی
  • معرفی کتاب
  • نمودار ها
  • وی بی - ماکرو

دستورات شرطی در VBA | ساختار Select

دستور select case در اکسل
۵/۵ - (۳ امتیاز)

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

ساختار SELECT از این نظر شبیه ساختار IF هست که یک عبارت رو بررسی میکنه و بر اساس نتیجه این بررسی کدهای متناسب رو اجرا میکنه. ساختار کلی دستور SELECT به صورت زیر هست:

Select Case Expression
Case Value1
    'دستوراتی که در صورت برقرار شرایط Value1 باید اجرا شود
Case Value2
    ' دستوراتی که در صورت برقرار شرایط Value2 باید اجرا شود
    …
Case Else
    'دستوراتی که در صورت برقراری هیچکدام از شرایط بالا باید اجرا شود
End Select

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

Select Case ActiveCell.Value
Case Is <= 5
    ActiveCell.Interior.Color = 65280  ' رنگ سبز
Case 6, 7, 8, 9
    ActiveCell.Interior.Color = 49407  ' رنگ نارنجی
Case 10
    ActiveCell.Interior.Color = 65535  ' رنگ زرد
Case Else
    ActiveCell.Interior.Color = 255    ' رنگ قرمز
End Select

تو مثال بالا اول باید مشخص کنیم که قصد داریم چه چیزی رو بررسی کنیم. این عبارت باید جلوی Select Case نوشته بشه. در اینجا مقدار درون سلول فعال مد نظر ماست ( ActiveCell.Value). در قسمت های بعدی حالت هایی که ممکنه وجود داشته باشه و رنگ های متناظر با اون حالت رو مشخص کردم. سعی کردم که روش های مختلف تعریف یک عبارت شرطی رو بیارم.

شرطتوضیحات
Case Is <= 5با استفاده از این نوع شرط میخوایم بررسی کنیم که آیا مقدار اون کوچکتر و یا مساوی ۵ هست یا نه. در صورتیکه این حالت برقرار باشه رنگ پس زمینه سلول سبز میشه.
Case 6, 7, 8, 9اگر بخوایم مقدار نوشته شده تو سلول فعال فقط چند عدد دلخواه باشه تا کدهای مربوطه اجرا بشه از این روش استفاده کنید.
Case 10اگر بخوایم که نتیجه عبارتی که بررسی میکنیم فقط برابر یک مقدار خاص باشه تا کدهای مربوطه اجرا بشه از این دستور استفاده میکنیم.
Case Elseاین دستور شبیه دستور Else در ساختار IF هست. در صورتی کدهای این قسمت اجرا میشه که هیچکدام از شرط هایی که در قسمت های بالای این ساختار تعریف کردیم برقرار نباشه.
نکته:
به محض اینکه اولین شرطی که در ساختار Select تعریف کردیم برقرار شد، کدهای اون قسمت اجرا میشه و دیگه از ساختار Select خارج میشه و بقیه شرط ها بررسی نمیشن. بنابراین هیچوقت دو قسمت از این ساختار اجرا نمیشه.

 

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

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

کلیدواژه : ساختار SELECT
134

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

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

  • Warning: Trying to access array offset on value of type bool in /home/excelped/public_html/wp-content/themes/Zonkan8.2/includes/mweb_core/mweb_action.php on line 0
    آواتار
    esmaeel ۵ اسفند ۱۳۹۸ / ۱۲:۱۳ ب٫ظ

    Sub CopyRange()

    ActiveWorkbook.Sheets(“Line1”).Visible = True
    ActiveWorkbook.Sheets(“Line1”).Select
    Range(“C6:H8”).Select
    Selection.COPY
    Workbooks.Open “D:\abc.xlsm”, Activate
    ActiveWorkbook.Sheets(“Linela”).Visible = True
    Range(“A2”).Select
    ActiveSheet.Paste
    ActiveWorkbook.Sheets(“line1a”).Visible = True
    ActiveWorkbook.Save
    ActiveWindow.Close
    سلام این فایل ایرادش چیه چرا بازوذخیره نمیکنه

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

      سلام
      برای اینکه متوجه بشید کجای کدی که زدید مشکل داره، Sub رو با استفاده از F8 خط به خط اجرا کنید تا مشخص شود کجا خطا ایجاد میکنه.

  • مجتبی ۲۹ بهمن ۱۳۹۸ / ۵:۳۴ ب٫ظ

    سلام من یک فرم دارم در شیت FORM که فرم اولیه توقفات وارد میشه و شماره اتوماتیک میخوره و یک فرم در شیت EDITION دارم که با همون شماره اتوماتیک ثبت نهایی میشه و در شیت دیتابیس دیگری به نام DATA EDIT وارد میشه حالا می خوام یه ماکرو بنویسم که این داده های ثبتی من در ادامه همون داده های قبل و بر روی همون ردیفی که اون شماره ثبت خورده ثبت بشه و در سلولهای خالی اون ردیف ثبت بشه، در واقع میخام هر دو دیتا بیس رو یکی کنم و دیتا بیس DATA EDIT رو حذف کنم امکانش هست کمکم کنید خیلی روش کار کردم ولی نوع آدرس دهیش رو نمیتونم تجسم کنم ، ممنون میشم
    با سپاس

    • سامان چراغی ۳۰ بهمن ۱۳۹۸ / ۱۰:۰۲ ق٫ظ

      سلام
      به جای استفاده از VBA بهتره در ستون های خالی یک جدول (مثلا جدول FORM) با استفاده از تابع Vlookup سایر اطلاعاتی که در جدول EDITION هست رو فراخوانی کنید (در آخر فرمول ها رو به عدد تبدیل کنید) و جدول FORM رو تبدیل به جدول اصلی کنید.

      • مجتبی ۳۰ بهمن ۱۳۹۸ / ۱:۴۹ ب٫ظ

        مسئله اینه که الان ماکرو ثبت در جدول برای کلید RECORD هم در فرم موجود در شیت FORM و هم در فرم موجود در شیت EDITION وجود داره و امکان فرمول دهی در داخل سلولهای فرم موجود در شیت FORM وجود نداره اما در سلولهای فرم EDITION برای بازخوانی از VLOOKUP استفاده کرده بودم ،بنده یه ماکرو نیاز دارم که شماره ثبت رو ببینه و روی همون شماره ثبت بقیه آیتم های یک توقف رو پیست کنه و این ماکرو رو با ماکروی RECORD همزمان روی کلید RECORD اجرا کنم.
        این کاری که میخام انجام بدم فقط با VBA امکان داره چون بعد از هر ثبت خانه های فرم CLEAR CONTENT میشن.
        ممنون از پاسخگویی و لطفتون

        • سامان چراغی ۳۰ بهمن ۱۳۹۸ / ۳:۲۶ ب٫ظ

          این موردی که من عرض کردم برای یکپارچه سازی دو تا دیتابیس هست.
          منظورتون از ادغام اطلاعات فرم چی هست؟

          • مجتبی ۲ اسفند ۱۳۹۸ / ۱۲:۵۶ ب٫ظ

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

  • mina ۳۰ آذر ۱۳۹۸ / ۷:۱۵ ب٫ظ

    اگه خواسته باشیم دو عدد را دریافت کند و هر عملگری(مثلا *) که وارد کرد محاسبه کند آیا می توانیم از کدselect case استفاده کنیم؟

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

      سلام
      اگر عملگر رو هم از کاربر دریافت کنید میتونید با ساختار Select عملیات انتخابی رو روی اعداد دریافت شده اعمال کنید.

  • شیما آقایی ۲۴ آبان ۱۳۹۷ / ۱۲:۱۲ ب٫ظ

    سلام.
    آیا این امکان وجود داره که وقتی یک سلول رو لینک میکنیم به یک سلول در یک جدول دیگر ، فقط ردیف مربوط به سلول انتخابی نمایش داده بشه و بقیه ی ردیف های جدول مشخص نباشند?

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

      درد بر شما
      خیر این امکان وجود نداره
      مگه اینکه کدنویسی کنید

ارسال دیدگاه

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

توسط
تومان