كيفية نقل العناصر بسرعة بين صندوقي قائمة في Excel؟
هل سبق لك أن حاولت نقل العناصر من صندوق قائمة إلى صندوق قائمة آخر كما هو موضح في لقطة الشاشة أدناه؟ هنا سأتحدث عن هذه العملية في Excel.
![]() | ![]() | ![]() |
نقل العناصر بين صناديق القائمة
نقل العناصر بين صناديق القائمة
لا توجد وظيفة مضمنة يمكنها مساعدتك على إنجاز المهمة، ولكن لدي كود VBA يمكنه المساعدة.
1. أولاً، تحتاج إلى إنشاء قائمة من البيانات التي سيتم عرضها كعناصر في صناديق القائمة في ورقة عمل جديدة تسمى Admin_Lists.
2. ثم حدد هذه البيانات واذهب إلى مربع الاسم لتسميها ItemList. انظر لقطة الشاشة:
3. ثم في ورقة العمل التي تحتوي على صندوقي القائمة، اضغط على Developer > Insert > List Box(Active X Control)، وارسم صندوقي قائمة. انظر لقطة الشاشة:
![]() | ![]() | ![]() |
إذا كان شريط Developer مخفيًا في الشريط الخاص بك، كيف تظهر/تعرض شريط المطور في شريط Excel 2007/2010/2013؟ هذه المقالة ستوضح لك كيفية إظهاره.
4. ثم اضغط على Developer > Insert > Command Button(Active X Control)، وارسم أربعة أزرار بين صندوقي القائمة. انظر لقطة الشاشة:
![]() | ![]() | ![]() |
الآن قم بإعادة تسمية الأربعة أزرار بأسماء جديدة.
5. حدد الزر الأول، واضغط على Properties، وفي لوحة الخصائص، أعطه اسم BTN_moveAllRight، واكتب >> في مربع النص بجانب Caption. انظر لقطة الشاشة:
6. كرر الخطوة 5 لإعادة تسمية الثلاثة أزرار الأخيرة بالأسماء التالية، واكتب أيضًا الأسهم المختلفة في العناوين. انظر لقطة الشاشة:
BTN_MoveSelectedRight
BTN_moveAllLeft
BTN_MoveSelectedLeft
![]() | ![]() | ![]() |
7. انقر بزر الماوس الأيمن على اسم الورقة التي تحتوي على صناديق القائمة وأزرار الأوامر، وحدد View Code من قائمة السياق. انظر لقطة الشاشة:
8. انسخ والصق الكود التالي في نافذة Module ثم احفظ الكود وأغلق نافذة Microsoft Visual Basic for Applications. انظر لقطة الشاشة:
VBA: نقل العناصر بين صندوقي قائمة
Private Sub Worksheet_Activate()
'UpdatebyExtendoffice20171117
Dim xCell As Range
Dim xRg As Range
Set xRg = Sheets("Admin_Lists").Range("ItemList")
Me.ListBox1.Clear
Me.ListBox2.Clear
With Me.ListBox1
.LinkedCell = ""
.ListFillRange = ""
For Each xCell In xRg
If xCell <> "" Then
.AddItem xCell.Value
End If
Next xCell
End With
Me.ListBox1.MultiSelect = fmMultiSelectMulti
Me.ListBox2.MultiSelect = fmMultiSelectMulti
End Sub
Private Sub BTN_MoveSelectedLeft_Click()
Call moveSigle(Me.ListBox2, Me.ListBox1)
End Sub
Private Sub BTN_MoveSelectedRight_Click()
Call moveSigle(Me.ListBox1, Me.ListBox2)
End Sub
Private Sub BTN_moveAllLeft_Click()
Call moveAll(Me.ListBox2, Me.ListBox1)
End Sub
Private Sub BTN_moveAllRight_Click()
Call moveAll(Me.ListBox1, Me.ListBox2)
End Sub
Sub moveAll(xListBox1 As Object, xListBox2 As Object)
Dim I As Long
For I = 0 To xListBox1.ListCount - 1
xListBox2.AddItem xListBox1.List(I)
Next I
xListBox1.Clear
End Sub
Sub moveSigle(xListBox1 As Object, xListBox2 As Object)
Dim I As Long
For I = 0 To xListBox1.ListCount - 1
If I = xListBox1.ListCount Then Exit Sub
If xListBox1.Selected(I) = True Then
xListBox2.AddItem xListBox1.List(I)
xListBox1.RemoveItem I
I = I - 1
End If
Next
End Sub
9. ثم انتقل إلى ورقة أخرى ثم عد إلى الورقة التي تحتوي على صناديق القائمة، الآن يمكنك رؤية أن بيانات القائمة قد تم إدراجها في أول صندوق قائمة. واضغط على أزرار الأوامر لنقل العناصر بين صندوقي القائمة.
نقل التحديد
![]() | ![]() | ![]() |
نقل الكل
![]() | ![]() | ![]() |
أفضل أدوات الإنتاجية لمكتب العمل
عزز مهاراتك في Excel مع Kutools لـ Excel، واختبر الكفاءة كما لم يحدث من قبل. Kutools لـ Excel يقدم أكثر من300 ميزة متقدمة لزيادة الإنتاجية وتوفير وقت الحفظ. انقر هنا للحصول على الميزة التي تحتاجها أكثر...
Office Tab يقدم واجهة التبويب لـ Office، ويجعل عملك أسهل بكثير
- تمكين تحرير وقراءة المستندات عبر التبويبات في Word وExcel وPowerPoint.
- افتح وأنشئ عدة مستندات في تبويبات جديدة ضمن نفس النافذة، بدلاً من فتحها في نوافذ منفصلة.
- يزيد إنتاجيتك بنسبة50%، ويقلل مئات النقرات بالماوس يومياً!