اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الردود الموصى بها

قام بنشر (معدل)

السلام عليكم السادة الافاضل

كنت محتاج شرح اسطر الكود لكي افهم طبيعة عمله و اتمكن من تعديل النطاق اللي بيعمل عليه ( الكود لاستخراج الطلبة الضعاف )

و لكم جزيل الشكر

 

 

Sub LastTest2()
'--------------------
كود استخراج الطلاب الضعاف

'--------------------
Dim i As Long, ws As Worksheet, Rng As Range
Dim C As Range, p As Integer, x
Dim Shp As Shape, Nam As String
Set ws = Sheets("الاول")
Application.ScreenUpdating = False
Range("ay5:az71") = ""
Set Shp = ws.Shapes(Application.Caller)
Nam = Shp.TextEffect.Text
ws.Range("KN1") = " ÇáØáÇÈ ÇáÖÚÇÝ ÇÞá ãä 65 % á" & Nam
p = 4
i = 5
Do While i <= 70
With ws
Select Case Nam
Case "شهر 10"
x = Array(214, 215, 216, 217, 218, 219, 220, 224, 228, 232, 236, 240, 244, 248)
Case "شهر 11"
x = Array(214, 215, 216, 217, 218, 219, 221, 225, 229, 233, 237, 241, 245, 249)
Case "شهر 12"
x = Array(214, 215, 216, 217, 218, 219, 222, 226, 230, 234, 238, 242, 246, 250)
Case Else
End Select
For j = LBound(x) To UBound(x)
Set Rng = .Cells(i, x(j))
For Each C In Rng
y = .Cells(4, x(j)) * 0.65
If .Cells(i, x(j)) < y Then
m = m + 1
If m > 1 Then GoTo 88:
p = p + 1
For a = 0 To 13
.Cells(p, a + 298) = .Cells(i, x(a))
.Cells(p, 298) = p - 4
Next
End If
Next
Next
End With
88:
m = 0
i = i + 1
Loop
End Sub

تم تعديل بواسطه ehabaf2
  • أفضل إجابة
قام بنشر

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

اليك شرح الكود المطلوب ارجو ان اكون قد وفقت

Sub LastTest()
'--------------------
Dim i As Long, ws As Worksheet, Rng As Range
Dim C As Range, p As Integer, x
Dim Shp As Shape, Nam As String
Set ws = Sheets("Sheet2")
Application.ScreenUpdating = False
Range("AO5:BB100") = ""      '  مسح النطاق الذى سوف يتم ارسال بيانات التلاميذ الضعاف
Set Shp = ws.Shapes(Application.Caller)   ' تعريف الشكل حسب العنوان المكتوب عليه
Nam = Shp.TextEffect.Text   '  الاسم المكتوب على الشكل
ws.Range("AQ1") = " الطلاب الضعاف اقل من 65 % ل" & Nam   '  عبارة تكتب عقب الضغط على اى زر حسب الشهر
p = 4       ' لعد التلاميذ الضعاف بدلا من الصفر يعنى
i = 5  '  اول صف سوف يتم العمل عليه
Do While i <= 70    '  آخر صف سوف يتم العمل عليه حسب المرفق و يم تغييره بسهولة
With ws
Select Case Nam   '  الاعمدة التى سوف يتم العمل عليها حسب اسم الشهر المكتوب على الزر
Case "شهر 10"
x = Array(1, 2, 3, 4, 5, 6, 7, 11, 15, 19, 23, 27, 31, 35)
Case "شهر 11"
x = Array(1, 2, 3, 4, 5, 6, 8, 12, 16, 20, 24, 28, 32, 36)
Case "شهر 12"
x = Array(1, 2, 3, 4, 5, 6, 9, 13, 17, 21, 25, 29, 33, 37)
Case Else
End Select
For j = LBound(x) To UBound(x)   ' عدد الاعمدة المطلوبة للعمل عليها و تكون مصفوفة
Set Rng = .Cells(i, x(j))   ' التعريف بالنطاق و جعل كل صف على حدة كمصوفة مستقلة بذاتها
For Each C In Rng  '     كل خلية فى هذا النطاق
y = .Cells(4, x(j)) * 0.65  '  شرط النجاح
If .Cells(i, x(j)) < y Then   ' اذا كان الشرط غير متوافر
m = m + 1     '  عد مواد الرسوب اقل من 65%
If m > 1 Then GoTo 88:    '  تكفى مادة واحدة ليبدأ للعمل عليها
p = p + 1    '  العد
For a = 0 To 13   ' عدد الخلايا التى سيتم ترحيل البيانات اليها
.Cells(p, a + 41) = .Cells(i, x(a))   ' ترحيل البيانات
.Cells(p, 41) = p - 4  '  مسلسل للتلاميذ الضعاف
Next
End If
Next
Next
End With
88:
m = 0
i = i + 1
Loop
End Sub

 

  • Like 5
قام بنشر

الف الف شكر لحضرتك استاذنا الفاضل ابراهيم الحداد 

بارك الله فى عمرك و زادك من فضله و علمه

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information