Image

كود لنسخ الأصناف إلى صفحاتها






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

فكرة الكود تقوم على التالي:
1.     يوجد لدينا حركات أصناف في الصفحة الرئيسية و هي صفحة الحركات و اسمهاTotal و اسماء الاصناف موجودة في العمود A
2.     و يوجد عدد من الاصناف من ضمنها صنف اسمهOrange و له أيضاً صفحة اسمها Orange .
3.     و صنف آخر اسمهApple  و له أيضاً صفحة بنفس الإسم
4.     و نريد كود يقوم بعملcut  لاسم الصنف و من ثم Paste  في الصفحة المرتبطة بإسمه .
و لعمل ذلك قدمت الكود التالي:

 Sub Excel4Us()

 Dim c As Range, LR As Integer, Rng As Range
 Application.EnableEvents = False
 LR = Sheets("Total").Range("a" & Rows.Count).End(xlUp).Row
 Set Rng = Sheets("Total").Range("a2:a" & LR)
 For Each c In Rng
     Select Case c.Value
         Case Is = "Apple"
            c.EntireRow.Cut Sheets("apple").Range("a" & Sheets("apple").Range("a" & Rows.Count).End(xlUp).Row + 1)
         Case Is = "Orange"
            c.EntireRow.Cut Sheets("Orange").Range("a" & Sheets("Orange").Range("a" & Rows.Count).End(xlUp).Row + 1)
     End Select
 Next c
 Rng.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
 Application.EnableEvents = True
 End Sub
__________________



و لكن عند تطبيقه

سنلاحظ البطئ في حركات القص و اللصق

و لذلك قمت بعمل كود اخر رديف له

و هو سريع بإستخدام خاصية الفلترة

و كان هذا هو الكود :

 Sub Excel4Us()
 Dim c As Range, LR As Integer, Rng As Range, Product()
 Application.EnableEvents = False
 LR = Sheets("Total").Range("a" & Rows.Count).End(xlUp).Row
 Set Rng = Sheets("Total").Range("a2:d" & LR)
 Product = Array("Apple", "Orange")
 Range("A1:D1").AutoFilter
 With Rng
     For i = LBound(Product) To UBound(Product)

0 التعليقات:

شكرا على التعليق

Excel4Us