أكاديمية الصقر للتدريب

لوحة التميز الأسبوعي
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
محمدعبدالسلام لا تميز خلال هذه الفترة-- لا تميز خلال هذه الفترة لا تميز خلال هذه الفترة طلب مساعدة اريد في كل 4 من شهر يتم نسح الاسم من عمود الى عمود اكسيل اسئله واجابات


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





حذف البيانات من خلال Listbox

السلام عليكم ورحمة الله طلب طريقة حدف البيانات من خلال الليست بوكس يوزرفورم مسح البيانات من Sheet1 عند تحديد اي سطر ف ..


موضوع مغلق

الصفحة 1 من 3 < 1 2 3 > الأخيرة »


07-10-2020 02:41 مساء
محمدعبدالسلام
عضو فعال
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 28-08-2017
رقم العضوية : 278
المشاركات : 167
الجنس : ذكر
تاريخ الميلاد : 19-6-1981
يتابعهم : 2
يتابعونه : 3
قوة السمعة : 185
 offline 

السلام عليكم ورحمة الله


طلب طريقة حدف البيانات من خلال  الليست بوكس يوزرفورم مسح البيانات من Sheet1

عند تحديد اي سطر في اللست بوكس والضغط دوبل كليك عليه يحذف من الليست بوكس


لمشاهدة الروابط يلزمك التسجيل في أكاديمية الصقر للتدريب
 
 
  back.zip   تحميل zip مرات التحميل :(68)
الحجم :(1331.845) KB



أفضل إجابة مقدمة من YasserKhalil وهي:
** بعد أن قمنا بالتعديلات في الأكواد الموجودة نأتي للكود الجديد وهو الكود الذي سيتم تنفيذه عند النقر المزدوج في الليست بوكس
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Dim cnt As Long
    If MsgBox("Selected Row Will Be Deleted. Are You Sure?", vbYesNo + vbQuestion) = vbNo Then Exit Sub
    With Me.ListBox1
        For cnt = 0 To .ListCount - 1
            If .Selected(cnt) Then
                ws.Rows(Val(.List(cnt, 2))).Delete
                .RemoveItem cnt
                UserForm_Initialize
                Exit Sub
            End If
        Next cnt
    End With
End Sub


شرح الكود:
-----------
قمنا بالإعلان عن متغير باسم cnt من النوع Long حيث سنقوم باستخدامه في الحلقة التكرارية للعناصر الموجودة في الليست بوكس.
إظهار رسالة للمستخدم تؤكد أن الصف الذي تم تحديده سيتم حذفه فإذا نقر المستخدم الاختيار No يتم الخروج من الإجراء الفرعي ، أي أنه لا يتم تنفيذ بقية الأسطر الموجودة بالكود.
السطر التالي يتم بدء التعامل مع الليست بوكس ، ثم يتم عمل حلقة تكرارية للعناصر الموجودة في الليست بوكس للتأكد من أن العنصر تم تحديده أو اختياره ، فإذا كان العنصر محدداً يتم التالي (وهذا هو محور المطلوب)
يتم حذف الصف في ورقة العمل المسماة Sheet1 بناءً على قيمة العنصر في العمود الثالث في الليست بوكس (لاحظ الرقم 2 يشير إلى العمود الثالث في الليست بوكس)
السطر الذي يليه يقوم بحذف العنصر من الليست بوكس.
السطر الذي يليه يقوم باستدعاء الكود في حدث بدء تشغيل الفورم (لذا يتم مسح محتويات الليست بوكس وإعادة التعبئة من جديد لتحصل على أرقام الصفوف بشكل صحيح بعد عملية الحذف التي تمت)
وأخيراً يتم الخروج من الحلقة التكرارية حيث لا داعي للتأكد من بقية العناصر الموجودة في الليست بوكس.

وتقبل وافر تقديري واحترامي
عرض الإجابة




07-10-2020 03:30 مساء
مشاهدة مشاركة منفردة [1]
YasserKhalil
مراقب عام
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10455
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 24
يتابعهم : 1
يتابعونه : 536
قوة السمعة : 36632
عدد الإجابات: 256
 offline 
look/images/icons/i1.gif حذف البيانات من خلال Listbox
وعليكم السلام أخي الكريم محمد عبد السلام
في الحقيقة يمكنني أن أختصر في المساعدة وأقوم برفع الملف بعد التعديل عليه ولكني لن أفعل ذلك ؛ لأن الهدف من المنتدى تعليمي وليس خدمي. وبمشاركتي بهذا الشكل ستكون الاستفادة لك ولغيرك ولي أنا أيضاً (من حيث توثيق الخطوات والشرح)

** بما أن التعامل مع ورقة العمل المسماة Sheet1 لذا يفضل أن نقوم بإعلان متغير من النوع ورقة عمل في أول الموديول الخاص بالفورم UserForm1
Option Explicit

Dim ws As Worksheet

لاحظ أنني أضفت سطر في بداية الكود وهذا السطر يجبرك على تعريف المتغيرات إذا لم يكن تم تعريفها في الأكواد الموجودة.

** الآن وبعد أن قمنا بالإعلان عن المتغير يلزم تعيين قيمة لهذا المتغير وستكون القيمة هي ورقة العمل المسماة Sheet1 ، وأنسب مكان لتعيين قيمة المتغير ws هو حدث بدء تشغيل الفورم UserForm_Initialize
وهذا هو الكود الخاص بحدث بدء التشغيل حيث قمت بإضافات بسيطة وهي مسح محتويات الليست بوكس قبل تعبئة الليست بوكس وستعرف لاحقاً السبب في إضافة هذه الجزئية.

Private Sub UserForm_Initialize()
    Dim lr As Long, i As Long
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    With Me.ListBox1
        .Clear
        .ColumnCount = 3
        lr = ws.Cells(Rows.Count, 1).End(xlUp).Row
        For i = 4 To lr
            .AddItem ws.Cells(i, 1).Value
            .List(ListBox1.ListCount - 1, 1) = ws.Cells(i, 2).Value
            .List(ListBox1.ListCount - 1, 2) = ws.Cells(i, 2).Row
        Next i
    End With
End Sub


يقوم الكود السابق بتعيين ورقة العمل ws وهو الورقة المسماة Sheet1 ، ثم نبدأ في التعامل مع الليست بوكس الموجود على الفورم ListBox1 ، ونقوم بمسح محتويات الليست بوكس باستخدام الأمر Clear ، ثم تحديد عدد الأعمدة في الليست بوكس وهي هنا 3 أعمدة ، ثم حلقة تكرارية لتعبئة الليست بوكس بالصفوف الموجودة في ورقة العمل من الصف الرابع وحتى آخر صف به بيانات على أن يكون الليست بوكس في العمود الأول يساوي قيمة الخلية في العمود الأول ، وأن يكون الليست بوكس في العمود الثاني هو قيمة الخلية في العمود الثاني ، وأن يكون الليست بوكس في العمود الثالث هو رقم الصف الموجود به البيانات في ورقة العمل.
(الكود السابق موجود بالفعل في ملفك لكنني أضفت بعض التغييرات البسيطة)

07-10-2020 03:38 مساء
مشاهدة مشاركة منفردة [2]
YasserKhalil
مراقب عام
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10455
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 24
يتابعهم : 1
يتابعونه : 536
قوة السمعة : 36632
عدد الإجابات: 256
 offline 
look/images/icons/i1.gif حذف البيانات من خلال Listbox
** بعد أن قمنا بالتعديلات في الأكواد الموجودة نأتي للكود الجديد وهو الكود الذي سيتم تنفيذه عند النقر المزدوج في الليست بوكس
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Dim cnt As Long
    If MsgBox("Selected Row Will Be Deleted. Are You Sure?", vbYesNo + vbQuestion) = vbNo Then Exit Sub
    With Me.ListBox1
        For cnt = 0 To .ListCount - 1
            If .Selected(cnt) Then
                ws.Rows(Val(.List(cnt, 2))).Delete
                .RemoveItem cnt
                UserForm_Initialize
                Exit Sub
            End If
        Next cnt
    End With
End Sub


شرح الكود:
-----------
قمنا بالإعلان عن متغير باسم cnt من النوع Long حيث سنقوم باستخدامه في الحلقة التكرارية للعناصر الموجودة في الليست بوكس.
إظهار رسالة للمستخدم تؤكد أن الصف الذي تم تحديده سيتم حذفه فإذا نقر المستخدم الاختيار No يتم الخروج من الإجراء الفرعي ، أي أنه لا يتم تنفيذ بقية الأسطر الموجودة بالكود.
السطر التالي يتم بدء التعامل مع الليست بوكس ، ثم يتم عمل حلقة تكرارية للعناصر الموجودة في الليست بوكس للتأكد من أن العنصر تم تحديده أو اختياره ، فإذا كان العنصر محدداً يتم التالي (وهذا هو محور المطلوب)
يتم حذف الصف في ورقة العمل المسماة Sheet1 بناءً على قيمة العنصر في العمود الثالث في الليست بوكس (لاحظ الرقم 2 يشير إلى العمود الثالث في الليست بوكس)
السطر الذي يليه يقوم بحذف العنصر من الليست بوكس.
السطر الذي يليه يقوم باستدعاء الكود في حدث بدء تشغيل الفورم (لذا يتم مسح محتويات الليست بوكس وإعادة التعبئة من جديد لتحصل على أرقام الصفوف بشكل صحيح بعد عملية الحذف التي تمت)
وأخيراً يتم الخروج من الحلقة التكرارية حيث لا داعي للتأكد من بقية العناصر الموجودة في الليست بوكس.

وتقبل وافر تقديري واحترامي

07-10-2020 04:23 مساء
مشاهدة مشاركة منفردة [3]
محمدعبدالسلام
عضو فعال
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 28-08-2017
رقم العضوية : 278
المشاركات : 167
الجنس : ذكر
تاريخ الميلاد : 19-6-1981
يتابعهم : 2
يتابعونه : 3
قوة السمعة : 185
 offline 
look/images/icons/i1.gif حذف البيانات من خلال Listbox
جزاك الله خيرا اخي ياسير على تفهمك وتقديم المساعده لكن اخي ياسير لما قمت بوضع الكود في الملف وعند النقر دوبل كليك في الليست بوكس ظهر لي هذا الخطا في الصوره جزاك الله خيرا اخي ياسير


1rZWI_11
 
 


07-10-2020 05:15 مساء
مشاهدة مشاركة منفردة [4]
YasserKhalil
مراقب عام
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10455
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 24
يتابعهم : 1
يتابعونه : 536
قوة السمعة : 36632
عدد الإجابات: 256
 offline 
look/images/icons/i1.gif حذف البيانات من خلال Listbox
ما هي رسالة الخطأ التي تظهر معك؟
وفي النافذة الفورية اكتب الأمر
?ws.Name

للتأكد من أن ورقة العمل تم تعيينها بشكل صحيح في الكود الخاص بحدث بدء تشغيل الفورم
وهل قمت بالتعديل في الكود الخاص بحدث بدء التشغيل كما أوضحت لك؟
وما هي قيمة العنصر في العمود الثالث عند النقر المزدوج على العنصر؟
يمكنك استخدام النافذة الفورية لمعرفة القيم ..

07-10-2020 05:42 مساء
مشاهدة مشاركة منفردة [5]
محمدعبدالسلام
عضو فعال
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 28-08-2017
رقم العضوية : 278
المشاركات : 167
الجنس : ذكر
تاريخ الميلاد : 19-6-1981
يتابعهم : 2
يتابعونه : 3
قوة السمعة : 185
 offline 
look/images/icons/i1.gif حذف البيانات من خلال Listbox
لم اقوم بالتعديل في الكود اخي ياسر ولااعريف طريقة تعديل
هده رسالة الخطأ التي تظهر جزاك الله خيرا

EQLE0_2
 
 


07-10-2020 06:13 مساء
مشاهدة مشاركة منفردة [6]
YasserKhalil
مراقب عام
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10455
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 24
يتابعهم : 1
يتابعونه : 536
قوة السمعة : 36632
عدد الإجابات: 256
 offline 
look/images/icons/i1.gif حذف البيانات من خلال Listbox
لن أستطيع مساعدتك برفع ملف مرفق لأن هذا مخالف لما أحاول القيام به.

راجع الشرح بشكل جيد .. ولاحظ أنه يتم الإعلان عن متغير من النوع ورقة عمل في أول الموديول الخاص بالفورم .. 
وضعت لك الأكواد كاملة وشرحتها لك بالتفصيل ، ولا أجد مبرر لعدم القدر على القيام بالتعديل في الأكواد الموجودة.
لا تنتظر أن يقوم الأعضاء بفعل كل شيء لك .. 


الصفحة 1 من 3 < 1 2 3 > الأخيرة »


الكلمات الدلالية
البيانات ، خلال ، Listbox ،


 










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

الساعة الآن 04:01 صباحا