بداية الكود
Sub Tarheel()
السطور التالية خاصة بتعيين متغيرات لتخزين البيانات من نوع أرقام صحيحة Integer
Dim i As Integer, x As Integer
Dim lr As Integer, y As Integer
السطر التالى لتحديد اخر صف يحتوى على بيانات
lr = [b10000].End(xlUp).Row
السطرين التاليين لمسح بيانات صفحة ناجحون وراسبون قبل نسخ البيانات اليهما
Sheets("ناجحون").Range("a9:ho1000").ClearContents
Sheets("راسبون").Range("a9:ho1000").ClearContents
السطر التالى يعمل على ايقاف اهتزاز الشاشة ( لتسريع الكود )
Application.ScreenUpdating = False
السطر التالى يعطى قيمة للمتغيرين x و y وهى تساوى 9 ( أول صف يتم فيه لصق البيانات المنسوخة فى صفحة ( ناجحون ) وصفحة ( راسبون )
x = 9: y = 9
السطر التالى بداية حلقة تكرارية تبدأ من الصف التاسع الى lr ( اخر صف يحتوى على بيانات )
For i = 9 To lr
وتنتهى هذه الحلقة التكرارية بالكلمة next
السطر التالى يختبر قيمة الخلية المحتوية على نتيجة الطالب
If Cells(i, 3).Value = "ناجح" And Cells(i, 4) <> " " Then
فاذا كانت تحتوى على كلمة ناجح وخلية اسم الطالب ليست فارغة يقوم بنسخ الصف بالكامل الذى توجد فيه الخلية عن طريق السطر التالى
Range("a" & i).Resize(1, 223).Copy
السطر التالى يعمل على لصق البيانات المنسوخة الى الصفحة ( ناجحون )
Sheets("ناجحون").Range("a" & x).PasteSpecial xlPasteValues
السطر التالى يعمل على ايقاف خاصية النسخ واللصق
Application.CutCopyMode = False
السطر التالى يزيد قيمة المتغير x بمقدار واحد
x = x + 1
الجزء الباقى من الكود تكرار الخطوات السابقة ولكن مع الراسب
السطر التالى خاص باظهار رسالة توضح اكتمال عملية فصل الناجحون والراسبون
MsgBox "تم بحمد الله فصل الناجحين والراسبين فى كشوف منفصلة", vbOKOnly, "ترحيل الناجحون والراسبون"
السطر التالى يعيد مرة اخرى خاصية اهتزاز الشاشة
Application.ScreenUpdating = True
نهاية الكود
End Sub
الشرح لاخيكم
/ رجب جاويش