كيف يمكن إلغاء تحديد مربع الاختيار الآخر تلقائيًا عند تحديد مربع اختيار في Excel؟
في العديد من السيناريوهات العملية، مثل إدارة قائمة مشتريات طويلة في Excel، قد تجد نفسك بحاجة إلى ضمان تحديد خيار واحد فقط ضمن كل فئة أو مجموعة محددة. على سبيل المثال، إذا تجاوزت بعض الفئات الميزانية المخصصة، فقد يتعيّن عليك إعادة التحديد بحيث يظل مربع اختيار واحد فقط مفعّلًا في كل مجموعة. وتُعد إدارة مربعات الاختيار يدويًّا في القوائم الكبيرة عملية غير فعّالة وعرضة للخطأ، خاصة مع تزايد عدد الفئات. ولتبسيط هذه المهمة وتقليل الأخطاء، يمكنك إعداد Excel بحيث يؤدي تحديد مربع اختيار جديد ضمن مجموعة إلى إلغاء تحديد المربع المختار سابقًا تلقائيًّا—مما يضمن أن يظل هناك خيار واحد فقط نشط في كل فئة في أي وقت. توفر لك هذه المقالة دليلًا خطوة بخطوة لتحقيق ذلك، لتجعل سير عملك أكثر كفاءة وموثوقية.
إلغاء تحديد مربع اختيار آخر عند تحديد مربع اختيار جديد باستخدام كود VBA
لتوضيح العملية، فكّر في الحالة الموضحة في الفيديو أعلاه: لديك عشرة مربعات اختيار تحمل الأسماءCheckBox1 حتىCheckBox10، مرتبة في ثلاث مجموعات تمثّل فئات شراء مختلفة.
✅ هيكل المجموعات:
- المجموعة 1: CheckBox1، CheckBox2، CheckBox3
- المجموعة 2: CheckBox4، CheckBox5، CheckBox6، CheckBox7
- المجموعة 3: CheckBox8، CheckBox9، CheckBox10
ضمن كل مجموعة، يمكنك تحديد مربع اختيار واحد فقط في الوقت نفسه؛ فبمجرد تحديد مربع جديد، يتم إلغاء تحديد جميع المربعات الأخرى في نفس المجموعة تلقائيًّا—مما يُحاكي سلوك أزرار الراديو، لكن باستخدام مربعات الاختيار.
🧩 خطوات تطبيق حل VBA:
- افتح محرر VBA:انقر بزر الماوس الأيمن على لسان الورقة التي وضعت فيها مربعات الاختيار، ثم اخترعرض الكود (View Code).
- الصق الكود التاليفي نافذة كود الورقة:
- أغلق محرر VBA (Alt + Q) وعُد إلى Excel لاختبار مربعات الاختيار.

Dim xBol As Boolean
'Updated by Extendoffice
Private Sub CheckBox1_Change(): SetCheckBoxes "CheckBox1": End Sub
Private Sub CheckBox2_Change(): SetCheckBoxes "CheckBox2": End Sub
Private Sub CheckBox3_Change(): SetCheckBoxes "CheckBox3": End Sub
Private Sub CheckBox4_Change(): SetCheckBoxes "CheckBox4": End Sub
Private Sub CheckBox5_Change(): SetCheckBoxes "CheckBox5": End Sub
Private Sub CheckBox6_Click(): SetCheckBoxes "CheckBox6": End Sub
Private Sub CheckBox7_Click(): SetCheckBoxes "CheckBox7": End Sub
Private Sub CheckBox8_Click(): SetCheckBoxes "CheckBox8": End Sub
Private Sub CheckBox9_Click(): SetCheckBoxes "CheckBox9": End Sub
Private Sub CheckBox10_Click(): SetCheckBoxes "CheckBox10": End Sub
Private Function SetCheckBoxes(mCheckBoxName As String)
Dim xAllArr, xArrItem
Dim xI, xJ
If Not xBol Then Exit Function
xAllArr = Array("CheckBox1,CheckBox2,CheckBox3", _
"CheckBox4,CheckBox5,CheckBox6,CheckBox7", _
"CheckBox8,CheckBox9,CheckBox10")
For xI = LBound(xAllArr) To UBound(xAllArr)
If InStr(xAllArr(xI), mCheckBoxName) > 0 Then
xBol = False
xArrItem = Split(xAllArr(xI), ",")
For xJ = LBound(xArrItem) To UBound(xArrItem)
If xArrItem(xJ) <> mCheckBoxName Then
Me.OLEObjects(xArrItem(xJ)).Object.Value = False
End If
Next
End If
Next
xBol = True
End Function
Private Sub Worksheet_Activate(): xBol = True: End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range): xBol = True: End Sub 📌 ملاحظات هامة:
- تأكد من أن خصائص مربع الاختيارالاسم (وليس التسميات) تتطابق تمامًا مع الأسماء الموجودة في الكود.
- يتم تحديد التجميعات في سطر المصفوفة:
xAllArr = Array("CheckBox1,CheckBox2,CheckBox3", "CheckBox4,CheckBox5,CheckBox6,CheckBox7", "CheckBox8,CheckBox9,CheckBox10") - يعمل هذا الكود VBA فقط مع مربعات الاختيار من نوععناصر تحكم ActiveX، ولا يعمل مع عناصر تحكم النماذج (Form Controls).
- يجب تمكين وحدات الماكرو لتشغيل هذا الأتمتة.
📺 عرض توضيحي:
🔍 نصائح استكشاف الأخطاء وإصلاحها:
- تأكد من خلو أسماء مربعات الاختيار من التكرار.
- تأكد من أن جميع مربعات الاختيار هيعناصر تحكم ActiveX.
- يجب أن تستدعي إجراءات كل مربع اختيار دالة
SetCheckBoxesبشكل صحيح. - تتطلب السيناريوهات العابرة للأوراق إجراء تعديلات إما عبر استخدام وحدات الفئات (Class Modules) أو من خلال التحكم المركزي.
💡 حل بديل:يمكنك استخدام أزرار الخيار (Option Buttons) منعناصر تحكم النماذج (Form Controls)للحصول على سلوك اختيار واحد مضمن. ومع ذلك، يوفّر استخدام VBA مع مربعات الاختيار مرونةً أكبر في التخطيطات المتقدمة والتحكم المنطقي.
✨ نصيحة:توفّر أدوات مثل Kutools لـ 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 يومًا بكامل الميزات— بدون تسجيل، بدون بطاقة ائتمان
- أفضل قيمة— وفِّر مقارنةً بشراء الإضافات بشكل منفصل