قائمة منسدلة مع تحديد متعدد

تعد القائمة المنسدلة الكلاسيكية في ورقة Excel رائعة ، ولكنها تسمح لك فقط بتحديد خيار واحد من المجموعة المعروضة. في بعض الأحيان يكون هذا هو ما تريده بالضبط ، ولكن هناك مواقف يحتاج فيها المستخدم إلى أن يكون قادرًا على الاختيار بعض عناصر من القائمة.

لنلقِ نظرة على العديد من التطبيقات النموذجية لقائمة التحديد المتعدد هذه.

الخيار 1. أفقي

يقوم المستخدم بتحديد العناصر من القائمة المنسدلة واحدًا تلو الآخر ، وتظهر على يمين الخلية التي يتم تغييرها ، ويتم إدراجها تلقائيًا بشكل أفقي:

يتم إنشاء القوائم المنسدلة في الخلايا C2: C5 في هذا المثال بطريقة قياسية ، على سبيل المثال

  1. حدد الخلايا C2: C5
  2. علامة تبويب أو قائمة البيانات اختر فريق التحقق من صحة البيانات
  3. في النافذة التي تفتح ، حدد خيارًا قائمة وحدد كنطاق مصدر الخلايا ذات البيانات المصدر للقائمة A1: A8

ثم تحتاج إلى إضافة ماكرو إلى وحدة الورقة ، والتي ستقوم بجميع الأعمال الرئيسية ، أي إضافة القيم المحددة إلى يمين الخلايا الخضراء. للقيام بذلك ، انقر بزر الماوس الأيمن فوق علامة تبويب الورقة مع القوائم المنسدلة وحدد الأمر شفرة المصدر. الصق التعليمة البرمجية التالية في نافذة محرر Visual Basic التي تفتح:

Private Sub Worksheet_Change (ByVal Target As Range) عند الخطأ ، استأنف التالي إذا لم يتقاطع (الهدف ، النطاق ("C2: C5")) لا شيء و Target.Cells.Count = 1 ثم Application.EnableEvents = False If Len (Target.Offset (0، 1)) = 0 ثم Target.Offset (0، 1) = الهدف الآخر Target.End (xlToRight). الإزاحة (0، 1) = نهاية الهدف If Target.ClearContents Application.EnableEvents = True End If End Sub  

إذا لزم الأمر ، فاستبدل النطاق الحساس للقوائم المنسدلة C2: C5 في السطر الثاني من هذا الكود بالنطاق الخاص بك.

الخيار 2. عمودي

كما في الإصدار السابق ، لكن القيم المحددة الجديدة لم تتم إضافتها إلى اليمين ، بل إلى الأسفل:

يتم ذلك بالطريقة نفسها تمامًا ، لكن كود ماكرو المعالج يتغير قليلاً:

Private Sub Worksheet_Change (ByVal Target As Range) عند الخطأ ، استئناف التالي إذا لم يتقاطع (الهدف ، النطاق ("C2: F2")) لا شيء و Target.Cells.Count = 1 ثم Application.EnableEvents = False If Len (Target.Offset (1، 0)) = 0 ثم Target.Offset (1، 0) = الهدف الآخر Target.End (xlDown). الإزاحة (1 ، 0) = نهاية الهدف If Target.ClearContents Application.EnableEvents = True End If End Sub  

مرة أخرى ، إذا لزم الأمر ، استبدل النطاق الحساس للقوائم المنسدلة C2: F2 بالنطاق الخاص بك في السطر الثاني من هذا الرمز.

الخيار 3. مع تراكم في نفس الخلية

في هذا الخيار ، يحدث التراكم في نفس الخلية حيث توجد القائمة المنسدلة. العناصر المحددة مفصولة بأي حرف محدد (على سبيل المثال ، فاصلة):

يتم إنشاء القوائم المنسدلة في الخلايا الخضراء بطريقة قياسية تمامًا ، كما في الطرق السابقة. يتم تنفيذ كل العمل ، مرة أخرى ، بواسطة ماكرو في وحدة الورقة:

Private Sub Worksheet_Change (ByVal Target As Range) عند الخطأ ، استأنف التالي إذا لم يتقاطع (الهدف ، النطاق ("C2: C5")) لا شيء و Target.Cells.Count = 1 ثم Application.EnableEvents = False newVal = Target Application.Undo oldval = Target If Len (oldval) <> 0 And oldval <> newVal then Target = Target & "،" & newVal Else Target = newVal End If Len (newVal) = 0 ثم Target.ClearContents Application.EnableEvents = True End If End Sub  

إذا رغبت في ذلك ، يمكنك استبدال الحرف الفاصل (الفاصلة) في السطر التاسع من التعليمات البرمجية بحرفك (على سبيل المثال ، مسافة أو فاصلة منقوطة).

  • كيفية إنشاء قائمة منسدلة بسيطة في خلية ورقة إكسل
  • قائمة منسدلة بالمحتوى
  • القائمة المنسدلة مع الخيارات المفقودة المضافة
  • ما هي وحدات الماكرو ، وكيفية استخدامها ، ومكان إدراج التعليمات البرمجية للماكرو في Visual Basic

اترك تعليق