كيفية عمل قائمة منسدلة بأسماء أوراق العمل في Excel دليل شامل مع أكواد جاهزة
هل تبحث عن طريقة إنشاء قائمة منسدلة (Dropdown List) في Excel تحتوي على
جميع أسماء أوراق العمل (Sheets)
تلقائياً؟ سواء كنت تستخدم Excel 2010،
2013، 2016،
2019، أو 365، فهذا الدليل سيشرح
لك أفضل طريقتين لعمل ذلك:
1. بطريقة تلقائية باستخدام VBA (ماكرو)
2. بدون ماكرو باستخدام دالات Excel المتقدمة
سنتعرف أيضاً على كيفية تحديث القائمة تلقائياً
عند إضافة أو حذف أوراق، مع حلول عملية لأهم المشاكل الشائعة.
🔹 لماذا تحتاج إلى قائمة منسدلة بأسماء أوراق العمل؟
- الانتقال السريع بين الأوراق دون البحث يدوياً.
- إنشاء لوحات تحكم (Dashboard) تفاعلية.
- ربط البيانات بين أوراق متعددة بسهولة.
🔹 الطريقة الأولى: عمل قائمة منسدلة بأسماء الشيتات باستخدام VBA (أوتوماتيكي)
- الخطوة 1: فتح محرر VBA
- اضغط `Alt + F11` لفتح محرر الأكواد.
- اختر Insert > Module.
الخطوة 2: نسخ الكود التالي
Sub
CreateSheetNamesDropdown()
Dim ws As Worksheet
Dim sheetList As String
Dim separator As String
separator =
""
For Each ws In ThisWorkbook.Worksheets
sheetList = sheetList & separator
& ws.Name
separator = ","
Next ws
With Sheets("الورقة1").Range("A2").Validation
.Delete
.Add Type:=xlValidateList,
AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=sheetList
.IgnoreBlank = True
.InCellDropdown = True
End With
MsgBox "تم إنشاء القائمة المنسدلة بنجاح!", vbInformation
End Sub
الخطوة 3: تشغيل الماكرو
اضغط `Alt + F8`،
اختر `CreateSheetNamesDropdown`،
ثم Run.
سيتم إنشاء قائمة منسدلة في الخلية A2 تحتوي على
جميع أسماء الأوراق.
⚡ كيف تجعل القائمة تُحدَّث تلقائياً؟
أضف هذا الكود في `ThisWorkbook`:
Private
Sub Workbook_NewSheet(ByVal Sh As Object)
Call CreateSheetNamesDropdown
End Sub
Private
Sub Workbook_SheetActivate(ByVal Sh As Object)
' للتحديث عند تغيير الأوراق (حل بديل لحذف الأوراق)
Call
CreateSheetNamesDropdown
End Sub
🔹
الطريقة الثانية: عمل القائمة بدون ماكرو (باستخدام دالات Excel)
الخطوة 1: إنشاء اسم ديناميكي (Named Range)
1. انتقل إلى Formulas
> Define Name.
2. أدخل الاسم SheetNames.
3. في Refers To،
أدخل:
=REPLACE(GET.WORKBOOK(1),1,FIND("]",GET.WORKBOOK(1)),"")
الخطوة 2: استخدام
الدالة INDIRECT لعمل القائمة
- اختر الخلية المراد وضع القائمة فيها (مثل A2).
- انتقل إلى Data > Data Validation.
- اختر List، وأدخل:
=INDIRECT("SheetNames")
⚠ ملاحظة: هذه الطريقة تتطلب حفظ الملف كـ MacroEnabled
Workbook (.xlsm) لأنها تستخدم `GET.WORKBOOK`.
🔹 مشاكل شائعة وحلولها
| المشكلة |
الحل |
| لا تظهر القائمة
بعد تشغيل الماكرو | تأكد من تفعيل الماكرو عند فتح الملف (Enable Content). |
| ظهور أسماء ملفات
أخرى | استخدم `ThisWorkbook.Worksheets`
بدلاً من `Application.Worksheets`.
| لا يتم التحديث عند حذف أوراق | أضف زر تحديث يدوي أو استخدم
`Workbook_SheetActivate`.
|
الآن أصبح لديك أفضل طريقتين لعمل قائمة
منسدلة بأسماء أوراق Excel،
سواء باستخدام VBA أو بدون ماكرو.
✅ الطريقة الأولى (VBA)
أفضل لأنها تحدَّث تلقائياً.
✅ الطريقة الثانية (بدون ماكرو) مناسبة إذا كنت لا تريد استخدام أكواد.
💡
نصيحة أخيرة: احفظ الملف كـ .xlsm
إذا استخدمت الماكرو أو دالة `GET.WORKBOOK`.
كيفية عمل قائمة منسدلة في Excel
إنشاء dropdown list
بأسماء الشيتات
طريقة عرض أسماء الأوراق في خلية Excel
تحديث قائمة منسدلة تلقائياً عند إضافة شيت
Excel VBA
لعمل قائمة أوراق العمل
بهذا الدليل الشامل، أصبح بإمكانك إنشاء
قوائم منسدلة ذكية في Excel بسهولة! 🚀