كيفية السماح بتحديد خانة اختيار واحدة فقط في مجموعة داخل Excel؟
في بعض تطبيقات Excel، قد تحتاج إلى السماح للمستخدمين باختيار خيار واحد فقط من مجموعة من خانات الاختيار - مما يحاكي سلوك أزرار الخيارات. على سبيل المثال، كما هو موضح في لقطة الشاشة أدناه، عند تحديد خانة اختيار واحدة في الصف الثاني، يتم تعطيل جميع خانات الاختيار الأخرى في المجموعة فوراً، مما يضمن إمكانية اختيار خيار واحد فقط في أي وقت. هذا القيد مفيد في نماذج الاستبيانات، قوائم الاختيار ذات الإجابة الواحدة، أو اللوحات التفاعلية حيث تريد منع الإجابات المتعددة. تحقيق هذه الوظيفة مباشرة في Excel يتطلب تقنيات محددة، مثل استخدام كود VBA. يقدم هذا المقال حلولًا عملية لتحقيق تأثير "اختيار واحد" باستخدام خانات الاختيار في Excel، بما في ذلك التعليمات خطوة بخطوة والاعتبارات المهمة للاستخدام العملي.
اجعل تحديد خانة اختيار واحدة فقط باستخدام كود VBA
يمكنك استخدام النهج التالي باستخدام VBA للتأكد من أنه يمكن تحديد خانة اختيار واحدة فقط في المجموعة في نفس الوقت. هذه الحل مناسب بشكل خاص عندما تحتاج إلى تجربة تلقائية وسلسة - مثالي للقوالب المعقدة أو عندما يكون التحكم في منطق التفعيل/تعطيل مهمًا.
1. ابدأ بإدراج خانات الاختيار حيث تريد فرض اختيار واحد فقط. بالنسبة لهذا الحل، يجب عليك استخدام خانات الاختيار ActiveX Control، لأن خانات الاختيار Form Controls لا تدعم آلية التفعيل/التعطيل مباشرة. لإدراج خانات اختيار ActiveX، انتقل إلى علامة التبويب Developer > Insert > ActiveX Controls > Check Box. رتب كل خانات الاختيار ضمن المجموعة المطلوبة كما هو موضح أدناه:
2. اضغط معًا على Alt + F11 لفتح نافذة Microsoft Visual Basic for Applications.
3. في نافذة المحرر، انقر فوق Insert > Class Module. هذه الخطوة تقوم بإنشاء وحدة فئة جديدة، وهي مطلوبة للتعامل مع الأحداث الخاصة بعدد من خانات الاختيار. باستخدام وحدة الفئة، يمكنك الرد على كل خانة اختيار يتم النقر عليها بشكل فردي، بغض النظر عن عدد خانات الاختيار الموجودة.
4. ابحث عن وحدة الفئة الجديدة في لوحة Properties (عادةً على اليسار)، انقر عليها، وفي مربع (Name)، أعد تسميتها من القيمة الافتراضية (مثل Class1) إلى ClsChk. ثم انسخ والصق الكود التالي في نافذة الكود لهذه الوحدة. شاهد لقطة الشاشة كمرجع:
VBA code1: حدد خانة اختيار واحدة فقط في كل مرة
Option Explicit
Public WithEvents Chk As MSForms.CheckBox
Private Sub Chk_Click()
Call SelOneCheckBox(Chk)
End Sub
Sub SelOneCheckBox(Target As Object)
Dim xObj As Object
Dim I As String
Dim n As Integer
If Target.Object.Value = True Then
I = Right(Target.Name, Len(Target.Name) - 8)
For n = 1 To ActiveSheet.OLEObjects.Count
If n <> Int(I) Then
Set xObj = ActiveSheet.OLEObjects.Item(n)
xObj.Object.Value = False
xObj.Object.Enabled = False
End If
Next
Else
I = Right(Target.Name, Len(Target.Name) - 8)
For n = 1 To ActiveSheet.OLEObjects.Count
If n <> Int(I) Then
Set xObj = ActiveSheet.OLEObjects.Item(n)
xObj.Object.Enabled = True
End If
Next
End If
End Sub
5. بعد ذلك، انقر فوق Insert > Module لإضافة وحدة كود قياسية. انسخ والصق الكود التالي في نافذة الوحدة. سيقوم هذا الكود بتهيئة و"ربط" جميع خانات الاختيار الخاصة بك مع معالج الأحداث الذي تم تعريفه أعلاه:
VBA code2: حدد خانة اختيار واحدة فقط في كل مرة
Dim xCollection As New Collection
Public Sub ClsChk_Init()
Dim xSht As Worksheet
Dim xObj As Object
Dim xChk As ClsChk
Set xSht = ActiveSheet
Set xCollection = Nothing
For Each xObj In xSht.OLEObjects
If xObj.Name Like "CheckBox**" Then
Set xChk = New ClsChk
Set xChk.Chk = CallByName(xSht, xObj.Name, VbGet)
xCollection.Add xChk
End If
Next
Set xChk = Nothing
End Sub
6. اضغط على F5 لتنفيذ الكود، والذي ينشط منطق التحديد الفردي لمجموعة خانات الاختيار. اختبر السلوك عن طريق تحديد أي من الخانات؛ يجب أن تصبح جميع الخانات الأخرى غير محددة ومعطلة فوراً. عند إلغاء التحديد الحالي، سيتم إعادة تفعيل جميع خانات الاختيار بحيث يمكنك القيام باختيار مختلف.
ملاحظة: إذا قمت بإضافة أو حذف أي خانات اختيار من المجموعة، ستحتاج إلى إعادة تشغيل تهيئة VBA. وذلك لأن معالجات الأحداث يتم تحديثها في كل مرة يتم فيها تنفيذ الكود، مما يضمن التعرف الصحيح على أي تغييرات في مجموعة التحكم بواسطة VBA الخاص بك.
تشمل مزايا هذه الطريقة أتمتتها الكاملة - لا يمكن للمستخدمين اختيار خيارات متعددة عن طريق الخطأ. ومع ذلك، فإنها تعمل فقط مع عناصر التحكم ActiveX، والتي قد تكون محدودة بإصدار Excel، ويجب تمكين ماكرو. أيضًا، قد يتطلب توزيع المصنفات التي تحتوي على عناصر تحكم ActiveX أو ماكرو إلى المستخدمين الآخرين إذنًا أمان إضافيًا.
مقالات ذات صلة:
- كيفية تصفية البيانات بناءً على خانة الاختيار في Excel؟
- كيفية إخفاء خانة اختيار عند إخفاء صف في Excel؟
- كيفية تمييز الخلية أو الصف مع خانة اختيار في Excel؟
- كيفية إنشاء قائمة منسدلة مع خانات اختيار متعددة في Excel؟
- كيفية إدخال ختم تاريخ في خلية إذا تم تحديد خانة اختيار في Excel؟
أفضل أدوات الإنتاجية لمكتب العمل
عزز مهاراتك في Excel باستخدام Kutools لـ Excel، واختبر كفاءة غير مسبوقة. Kutools لـ Excel يوفر أكثر من300 ميزة متقدمة لزيادة الإنتاجية وتوفير وقت الحفظ. انقر هنا للحصول على الميزة الأكثر أهمية بالنسبة لك...
Office Tab يجلب واجهة التبويب إلى Office ويجعل عملك أسهل بكثير
- تفعيل تحرير وقراءة عبر التبويبات في Word، Excel، PowerPoint، Publisher، Access، Visio وProject.
- افتح وأنشئ عدة مستندات في تبويبات جديدة في نفس النافذة، بدلاً من نوافذ مستقلة.
- يزيد إنتاجيتك بنسبة50%، ويقلل مئات النقرات اليومية من الفأرة!
جميع إضافات Kutools. مثبت واحد
حزمة Kutools for Office تجمع بين إضافات Excel وWord وOutlook وPowerPoint إضافة إلى Office Tab Pro، وهي مثالية للفرق التي تعمل عبر تطبيقات Office.





- حزمة الكل في واحد — إضافات Excel وWord وOutlook وPowerPoint + Office Tab Pro
- مثبّت واحد، ترخيص واحد — إعداد في دقائق (جاهز لـ MSI)
- الأداء الأفضل معًا — إنتاجية مُبسطة عبر تطبيقات Office
- تجربة كاملة لمدة30 يومًا — بدون تسجيل، بدون بطاقة ائتمان
- قيمة رائعة — وفر مقارنة بشراء الإضافات بشكل منفرد