سبد خرید
0

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

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

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

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

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

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

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

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

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

 

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

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

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

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

دیدگاه کاربران
  • آواتار
    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 عملیات انتخابی رو روی اعداد دریافت شده اعمال کنید.

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

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

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

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

ارسال دیدگاه

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

توسط
تومان