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

تعديل كود الأستاذ ياسر


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

السلام عليكم
يظهر خطأ في السطر

 For R = 2 To LR

اضن ان المتغير  R  غير معرف

 

 

حسننا صححة الخطأ لكن الكود لم يجلب عمودي الحفظ

تم تعديل بواسطه أبو عبد الملك السوفي
رابط هذا التعليق
شارك

اتعبتك معي استاذ

اقصد العمودين M L   في صفحة التقرير الشهري التي تعدل في اللكود من اجلها

اقصد ان الاضافة التي اضفتها للكود لجلب العمودين من مجمع النتائج الشهرية لم تعمل

تم تعديل بواسطه أبو عبد الملك السوفي
رابط هذا التعليق
شارك

اذا تفضل جرب هذا التعديل

Sub CopyDataFromRecordInf()
    Dim WS As Worksheet, SH As Worksheet
    Dim LR As Long, LRCur As Long, I As Long
    Dim rngA As Range, rngB As Range, rngC As Range, rngD As Range, rngP As Range
    Dim X, Y, XX, YY
    Dim rngMnhg As Range
    Set WS = Sheets("معلومات التسجيل"): Set SH = Sheets("التقرير الشهري")
    LR = WS.Cells(Rows.Count, 1).End(xlUp).Row
    With Sheets("المنهج")
        LRCur = .Cells(Rows.Count, 1).End(xlUp).Row
        Set rngA = .Range("A2:A" & LRCur): Set rngB = .Range("B2:B" & LRCur)
        Set rngC = .Range("C2:C" & LRCur): Set rngD = .Range("D2:D" & LRCur)
        Set rngMnhg = .Range("A2:D1000"): Set rngP = .Range("P2:P" & LRCur)
    End With
    Application.ScreenUpdating = False
        With SH
            SH.Range("A2:E1000,I2:K1000,R2:U1000").ClearContents
            For I = 2 To LR
                .Cells(I, 1) = WS.Cells(I, 1)
                .Cells(I, 2) = WS.Cells(I, 2)
                .Cells(I, 3) = WS.Cells(I, 3)
                .Cells(I, 23) = WS.Cells(I, 16)
                If .Cells(I, 16) > 5 Then
                    .Cells(I, 5) = 0
                Else
                    .Cells(I, 5) = 5 - .Cells(I, 16)
                End If
                If .Cells(I, 8) > 5 Then
                    .Cells(I, 9) = 0
                Else
                    .Cells(I, 9) = 15 - (3 * .Cells(I, 8))
                End If
                X = ValueLookUp(rngB, .Cells(I, 12).Value, rngC, rngD, .Cells(I, 13).Value, rngA)
                Y = ValueLookUp(rngB, .Cells(I, 14).Value, rngC, rngD, .Cells(I, 15).Value, rngA)
                .Cells(I, 10).Value = (Y - X) * 10
                If .Cells(I, 10) > 100 Then
                    .Cells(I, 11) = 10
                Else
                    .Cells(I, 11) = .Cells(I, 10) / 10
                End If
                .Cells(I, 18) = Application.WorksheetFunction.Sum(Range(.Cells(I, 5), .Cells(I, 7)), .Cells(I, 9), .Cells(I, 11))
                .Cells(I, 20) = Level(.Cells(I, 18))
                .Cells(I, "L") = Ali_C(CStr(.Cells(I, 22)), CStr(.Cells(I, 3)), 1)
                .Cells(I, "M") = Ali_C(CStr(.Cells(I, 22)), CStr(.Cells(I, 3)), 2)
                .Cells(I, 4).Formula = "=IF(" & .Cells(I, 12).Address & "="""","""",LOOKUP(INDEX(QNumbers,MATCH(" & .Cells(I, 12).Address & ",QNames,0)),الحلقات!$F$2:$F$6,الحلقات!$B$2:$B$6))"
                .Cells(I, 4).Value = .Cells(I, 4).Value
                XX = Application.WorksheetFunction.VLookup(X + 9, rngMnhg, 2)
                YY = Application.WorksheetFunction.VLookup(X + 9, rngMnhg, 4)
                .Cells(I, 21) = XX & " " & YY
            Next I
            Call RankMultipleColumns
            .Range("A1").Select
        End With
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub
Private Function Ali_C(Moth$, Nm$, N&)
Dim Sht As Worksheet
Dim R
Set Sht = Sheets("مجمع النتائج الشهرية")
With Sht
For R = 2 To .Cells(.Rows.Count, 3).End(xlUp).Row
    If Trim(CStr(.Cells(R, 3))) = Trim(Nm) Then
        If Ch_Month(Moth) = CStr(.Cells(R, "V")) Then
            If .Cells(R, "R") >= 60 Then
               Select Case N
                      Case Is = 1
                           Ali_C = .Cells(R, "N")
                      Case Else
                           Ali_C = .Cells(R, "O")
                End Select
                Exit Function
             ElseIf .Cells(R, "R") < 60 Then
               Select Case N
                      Case Is = 1
                           Ali_C = .Cells(R, "L")
                      Case Else
                           Ali_C = .Cells(R, "M")
                End Select
                Exit Function
            End If
        End If
    End If
Next R
End With
End Function
Private Function Ch_Month(Mn As String)
Dim Mm&
Dim Tn$, X$
For Mm = 1 To 12
Tn = MonthName(Mm)
 If Tn = Trim(Mn) Then
   Mm = Mm - 1
     X = MonthName(Mm)
     Exit For
   End If
Next
If Mm Then Ch_Month = X
End Function
Public Function ValueLookUp(ByVal NameRange As Range, sName As String, _
                            FromRange As Range, ToRange As Range, _
                            MonthValue As Integer, _
                            ResultRange As Range) As Long
'=ValueLookUp($B$2:$B$20,H6,$C$2:$C$20,$D$2:$D$20,I6,$A$2:$A$20)
'---------------------------------------------------------------
    Dim Cell As Range
    Dim I As Long, iIndex As Long, J As Long
    Dim ColIndex As Collection: Set ColIndex = New Collection

    I = 1
    iIndex = 1

    For Each Cell In NameRange
        If Cell.Value = sName Then
            ColIndex.Add I, CStr(iIndex)

            iIndex = iIndex + 1
        End If
        I = I + 1
    Next Cell

    For J = 1 To ColIndex.Count
        If MonthValue >= FromRange.Item(ColIndex.Item(J), 1) And ToRange.Item(ColIndex.Item(J), 1) >= MonthValue Then
            ValueLookUp = ResultRange.Item(ColIndex.Item(J), 1)
            Exit Function
        End If
    Next J

End Function

 

رابط هذا التعليق
شارك

شاهد النتائج عبر المرفق

ومالنتائج التي ترى ان الكود لخبطها 

 يرجا التوضيح اين وجدت اللخبطه بالضبط

  في اي عمود

 

تجربه.rar

رابط هذا التعليق
شارك

الظاهر من التسجيل انه يعمل بشكل ممتاز

لكنه لم يعمل عندي

جلب كل البيانات الا البيانات المطلوبة في العودين m l

تم تعديل بواسطه أبو عبد الملك السوفي
رابط هذا التعليق
شارك

صباح الخير

صراحه غريبه جربت الكود عندي وارفقت لك فيديو

  وصوره وحسب كلامك ان النتائج سليمه

   عندي الاوفيس 2007 

  ارجو من احد الاخوه الاعضاء التجربه وارفاق النتائج

 كي نعرف اين المشكله ربما تكون في جهازك فقط

رابط هذا التعليق
شارك

استاذي

هل لغة الاكسل تؤثر في البرمجة

فانا لغة البرمجة فيه فرنسية مثلا في دوال التاريخ تجد السنة année  وليست year

 

رابط هذا التعليق
شارك

في هذا الكود

Private Function Ch_Month(Mn As String)
Dim Mm&
Dim Tn$, X$
For Mm = 1 To 12
Tn = MonthName(Mm)
 If Tn = Trim(Mn) Then
   Mm = Mm - 1
     X = MonthName(Mm)
     Exit For
   End If
Next
If Mm Then Ch_Month = X
End Function

دالة vba.MonthName

شوف وش اسمها عندك

رابط هذا التعليق
شارك

MonthName

الدالة السابقه

لإرجاع اسم الشهر حسب تسلسله

مثال :

اذا اعطيناها MonthName(1)

ستخرج لنا اسم اول شهر في السنه الذي هو "يناير"

 

رابط هذا التعليق
شارك

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