انتخاب چندگزینه از لیست کشویی در اکسل

21,781
45 دیدگاه
انتخاب چند گزینه از لیست کشویی

همانطور که می دانید در اکسل می توان با استفاده از ابزار Data Validation لیست های کشویی (Dropdown List) ایجاد کرد و به کاربر امکان انتخاب از میان گزینه های از پیش تعیین شده را داد. در حالت عادی هر بار تنها یک گزینه از لیست کشویی را می توان انتخاب کرد اما گاهی اوقات نیاز است که کاربر چند گزینه را از لیست انتخاب نماید برای مثال انتخاب چند روز هفته یا انتخاب رشته های ورزشی مورد علاقه و … که به واسطه کارتون به آن نیاز دارید. در اینجا می خواهیم به روشی ساده امکان انتخاب چند گزینه از لیست کشویی در اکسل را فراهم کنیم. با ما همراه باشید.

ساخت منوی کشویی با امکان انتخاب چند گزینه

جهت ساخت لیست کشویی با امکان انتخاب چند گزینه در اکسل از کدنویسی استفاده می شود. برای اینکار فایل اکسل خود را باز کنید و با استفاده از ابزار Data Validation در یکی از سلول ها منوی کشویی ایجاد نمایید. سپس همانند تصویر از روی نام sheet کلیک راست کرده و گزینه View Code را انتخاب کنید تا محیط کد نویسی آن باز شود.

گزینه view code

حال کد های ذیل را در این قسمت وارد نمایید:

Sheet1.ir

Option Explicit
'============== Sheet1.ir ================
Private Sub Worksheet_Change(ByVal Target As Range)
    'آدر سلول يا سلول هاي داراي ليست کشويي
    If Target.Address = "$B$9" Then
        Dim Old_txt, New_txt, Sep_txt As String
        With Application
            'کاراکتر جداکننده بين گزينه ها
            Sep_txt = " " & Chr(124) & " "
            'لغو عمليات در زمان حذف محتواي سلول ليست کشويي
            If Target.Value = "" Then Exit Sub
            'غير فعال کردن نمايش پيغام هاي اکسل
            .EnableEvents = False
            'کنترل خطا : درزمان ورود مواردي غير از آيتم هاي ليست کشويي
            On Error GoTo onErr2
            '
            New_txt = Target.Value & Sep_txt
            .Undo
            Old_txt = Target.Value
            '
            'کنترل وجود آيتم تکراري
            On Error GoTo onErr1
            If .WorksheetFunction.Search(New_txt, Old_txt) > 0 Then
                Target.Value = .WorksheetFunction.Substitute(Old_txt, New_txt, "")
                .EnableEvents = True
                Exit Sub
            End If
            onErr1:
            Target.Value = Old_txt & New_txt
            onErr2:
            'فعال کردن نمايش پيغام هاي اکسل
            .EnableEvents = True
        End With
    End If
End Sub

Sheet1.ir

نتیجه همانند تصویر ذیل خواهد بود.

دقت کنید که در خط 5 کد بالا به جای 9$B$ آدرس سلولی که منوی کشویی را ساخته اید وارد نمایید. حال به محیط اکسل باز گردید و منوی کشویی را امتحان کنید. خواهید دید که با انتخاب هر گزینه، آن گزینه به محتوای سلول اضافه می شود. برای حذف یک گزینه از محتوای سلول نیز کافی است دوباره آن گزینه را از لیست انتخاب کنید. به همین سادگی امکان انتخاب چند گزینه از لیست کشویی را فراهم کردید.

در صورتی که در چند سلول لیست کشویی ایجاد کرده اید باید آدرس تمام آن سلول ها را به خط 5 کد بالا اضافه کنید. برای مثال فرض کنید در سلول های C10 و D12 لیست کشویی وجود دارد. در خط 5 به صورت ذیل آدرس ها را وارد کنید:

If Target.Address = “$C$10” Or Target.Address = “$D$12” Then

کاراکتر جدا کننده بین آیتم ها نیز با دستور Chr در خط 9 مشخص می شود. در اینجا از Chr(124) برای گذاشتن کاراکتر | بین آیتم های انتخاب استفاده شده است. Chr عملکردی مشابه تابع  CHAR در اکسل را دارد و با وارد کردن شماره یونیکد هر کاراکتر، آن را نمایش می دهد. برای آشنایی بیشتر توضیحات توابع CHAR ، UNICHAR و UNICODE را ببینید.

نتیجه کار را می توانید در ویدیو ذیل مشاهده  و فایل اکسل مربوط به این مطلب را دریافت کنید:

تعداد دانلود : 2080

مطالب مرتبط :

45 دیدگاه. پیغام بگذارید

  • با سلام و ممنون از سایت خوبتون
    من این روش رو تست کردم اوکی بود فقط یک مشکل داره توی کدنویسیش محدودیت در تعداد سلولی که میخایم این برنامه روش پیاده کنیم داره یعنی فقط مثلا تا 36سلول میتونیم انتخاب کنیم درصورتیکه فایل من 57ردیفه
    لطفا راهنماییم کنید
    ممنون

    پاسخ
    • رسول سلیمانی
      ۲۸ آبان ۱۴۰۱

      سلام مرتضی عزیز
      این مشکل نیست، شما کافیه در خط 5، شرط را به این صورت بنویسید
      مثلا برای اینکه تمامی سلول های ستون 2 تا ردیف 60 شامل لیست کشویی باشد :

       If Target.Column = 2 And Target.Row <= 60 Then
      
      پاسخ
  • سلام من این کد اجرا کردم ولی فقط برای یک سلول اجرا میشه . اگر مثلا برای f3 تا f100 بخوایم اجرا بشه باید چطور دستور داد؟

    پاسخ
    • سلام مرتضی عزیز
      شما باید شرط if را که در خط 5 قرار دارد را متناسب با نیاز خود تغییر دهید.مثلا برای موردی که گفتین کد ذیل

      If Target.column =5 AND Target.Row >2 AND Target.Row < 101 Then

      در خط 5 وارد کنید

      پاسخ
  • سلام بارها کد وارد کردم و همه چی اکی بود. ولی فایل میبندم دوباره باز میکنم کد ها حذف شدن. البته سیو هم میزنم

    پاسخ
  • وقت بخیر.چرا بعد نوشتن کد با باز کردن مجدد فایل اکسل کد نوشته شده پاک میشه.یعنی سیو نمیشه

    پاسخ
  • اشکان
    ۷ دی ۱۴۰۲

    سلام آیا این امکان در اکسل وجود دارد که فقط یک سلول یا یک ردیف را راست چین یا چپ پین کرد

    پاسخ
    • سلام در تب home از ابزارهای بخش alignment می‌تونید استفاده کنید

      پاسخ
      • اشکان
        ۷ دی ۱۴۰۲

        سلام ممنون از سرعت در پاسخگویی در حقیقت من میخوام محتوای داخل کشوم چپ چین بشن فقط چون کلمات در زمان بالا و پایین کردن کشو میرن زیر نمار کنار کشو

        پاسخ
        • رسول سلیمانی
          ۸ دی ۱۴۰۲

          در استفاده از این نوع لیست متاسفانه امکان اعمال تغییرات روی آن وجود ندارد برای رفع شدن مشکل تون می تونید چیدمان اکسل را Left to Right قرار دهید . از تب page layout اینکار را انجام دهید

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

          پاسخ
          • سلام.. برای نمایش متن فارسی در VBA این تنظیمات را انجام دهید
            Control Panel
            Region
            از سربرگ Administrative روی Change System locale کلیک کنید و از منوی کشویی Persians را انتخاب کنید

            کد ها را هم از روی فایل پیوست کپی نمایید

  • اشکان
    ۷ دی ۱۴۰۲

    من هرچی این فرمول را وارد می کنم نمیشه حتی کل فرمول رو از اکسل خودتون کپی کردم فقط نام سلول تغییر دادم ولی بازم نشد نکته جالب اینه که اون فایل اکسل که گداشتید دانلود کنیم حتی اونم نمیشه چند گزینه انتخاب کرد ممنون میشم راهمایی کنید

    پاسخ
    • رسول سلیمانی
      ۸ دی ۱۴۰۲

      کدها به درستی عمل می کنند لطفا خطایی که رخ می دهد را ارسال بفرمایید
      در خصوص عمل نکردن فایل دانلودی… چون از کد استفاده شده اکسل کدها را غیر فعال می کند برای همین پس از دانلود و باز کردن فایل یه نوار زرد رنگ در بالای صفحه اکسل نشان داده می شود روی دکمه enable content کلیک کنید اگر با این کار هم درست نشد به احتمال زیاد از ویندوز 11 استفاده می کنید در ویندوز 11 فایل های دانلودی حاوی کد مسدود می شوند برای رفع آن روی فایل کلیک راست کرده و گزینه properties را انتخاب کنید در تب general پایین صفحه تیک گزینه unblock را بزنید و دوباره فایل را اجرا کنید

      پاسخ
  • سلام وقت بخیر من می خواستم این فرمول انتخاب چند گزینه در کشو روی سه تا از ستون هام اجرا بشه و اومدم تو خط پنجم این تغییر رو دادم ولی الان در کل ستون ها داره این فرمول اجرا می شه ممنون میشم راهنمایی کنید .
    If Target.Column = (6) Or (19) Or (28) And Target.Row > 2 And Target.Row < 3271 Then

    پاسخ
  • سلام
    وقتتون بخیر.ممنونم از سایت خوبتون و آموزش کاملتون
    اگر بخوان امکان انتخاب چند گزینه ای برای دو ستون باشه باید چیکار کنم؟

    پاسخ
  • سلام ، من یک فایل با 30 ردیف دارم ، میخوام برای تمامی ردیفهام این کد رو استفاده کنم ، چه تغییری باید رد کد ایجاد بشه ؟ ممنون میشم راهنماییم کنید ، خیلی واجبه

    پاسخ
    • سلام فرض کنیم میخواهید در ستون B از ردیف 10 تا ردیف 40 میخواهید این فرمول را استفاد کنید برای اینکار خط 5 کد را به صورت ذیل بنویسید
      If Target.column =2 AND Target.Row <41 AND Target.Row > 9 Then

      پاسخ
  • سلام
    ممنون از کدی که به اشتراک گذاشتین. من یه مشکل کوچیک دارم. اگه بخوام که این علامت جدا کننده درانتهای اخرین انتخاب ظاهر نشه چه راه حلی پیشنهاد میدید?

    پاسخ
  • سلام درون یک ستون از اکسل وقتی کلیک می کنم علامتی شبیه ‘ روبروی متن ظاهر میشه که نمیدونم چی هست ولی شبیه لیست کشویی عمل میکنه
    چجوری میتونم برش دارم؟

    پاسخ
  • سلام مجدد
    درون فایل دیگه این اتفاق میوفته

    پاسخ
  • سلام چگونه می توان بعد از ورود اطلاعات از لیست کشویی گزارش گیری کرد؟

    پاسخ
  • سلام من قبلا از این روش استفاده کردم اما کدها پریده. الان که دوباره میزنم اصلا کد کار نکرد و همچنان منوی کشویی با انتخاب تنها یک گزینه فعاله. ضمنا فایل نمونه خودتون رو هم دانلود و آنبلاک کردم اونجا هم ویزایش میکنم تک گزینه ای میشه. لطفا راهنمایی کنید

    پاسخ
    • سلام لطفا فایلی که کد را در آن ویرایش میکنید را در صورت امکان ارسال کنید تا بررسی شود. فایل نمونه مشکلی نداشته و با دور ورژن 2016 و 2021 هم امتحان کردم مشکلی نداشت

      پاسخ
  • با سلام
    بسیااااار عالی
    ممنون از راهنمایی خوبتون

    پاسخ
  • شلام خسته نباشید من فایل اکسل رو با پسوندxlsm.* ذخیره کردم اما یک علامت سوال کنار آیکن اومده و وقتی فایل رو باز میکنم کدنویسی هست ولی عمل نمیکنه. ممنون میشم راهنمایی بفرمایید

    پاسخ
    • سلام وقتي فايل را با پسوند xlsm.* ذخیره می کنید اون علامت کنار آیکون فایل اکسل نشان داده میشه یعنی فایل حاوی کد است.
      شاید ماکرو ها در اکسل شما غیر فعال است. نام فایل را تغییر دهید سپس آن را اجرا کنید بعد از باز کردن فایل یه نوار زرد رنگ در بالای صفحه اکسل نشان داده می شود روی دکمه enable content کلیک کنید اگر با این کار هم درست نشد در صورت امکان یک کپی از فایل را جهت بررسی بیشتر ارسال نمایید

      پاسخ
  • سلام با پسوندی که گفتید save کردم و وقتی فایل رو باز میکنم فایل کدنویسی شده ولی عمل نمیکنه راهنمایی بفرمایید لطفا
    در کنار آیکن هم یک علامت تعجب میاد

    پاسخ
  • سلام ممنون از آموزش عالی و پاسخ دهی های عالی ترتون خیلی استفاده کردم

    پاسخ
  • ناشناس
    ۲۲ مهر ۱۴۰۴

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    این خطا چی هست که وقتی می خوام اجرا کنم میاد؟

    پاسخ
    • سلام selection رو پاک کن فقط
      Private Sub Worksheet_Change(ByVal Target As Range)
      روبزار،
      اونی که شما نوشتین با انتخاب هرسلول اجرا میشه نه با تغییر مقدار سلول

      پاسخ
  • اسداللهی
    ۲۹ آذر ۱۴۰۴

    سلام
    دستور دیگری دارم که می خواهم با این یکی هم زمان اجرا شوند
    در دستور اول انتخاب در چند لیست کشویی ، با تغییر اولی ریست شده و کلمه انتخاب کنید در همه سلول ها ظاهر می شود
    و در دستور دوم یکی از این سلولها را می خواهم چند انتخابی باشد
    چرا هر دو اجرا نمی شوند؟
    جدا جدا درست عمل می کنند ولی با هم خیر …..
    حتی تحت یکی صفحه ورک شیت چنج نوشته ام و دستورات را هر کدام با اند ایف قبل از اند ساب قرار داده ام
    ممنون

    پاسخ

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

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

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

حداکثر حجم مجاز فایل : 5 مگابایت فرمت های مجاز : jpeg - jpg - png - pdf- xls - xlsx - xlsb - xlsm - txt - csv - zip - rar فایل ها را اینجا بکشید

keyboard_arrow_up