اذهب الي المحتوي
أوفيسنا

ممكن تعديل على الكود


إذهب إلى أفضل إجابة Solved by محمد هشام.,

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

السلام عليكم إخوتي 

لدي في الملف المرفق في شيت TI3DAD كان يعمل جيدا و لكن بعد إضافة صفوف جديدة في شيت BASE توقف عن العمل , اصبح تظهر الرسالة المرفقة 

الكود المستعمل هو لأحد أساتذة المنتدى تشكراتي الخالصة له 

الكود موجود في Module2 - Sub filter Clas

47.JPG

تقرير المصلحة البيداغوحية111.xlsm

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

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

ضف هذا السطر قبل الخطأ مباشرة

            On Error Resume Next
            st = Mid(Trim(.Cells(i, 2)), 1, 1)
 

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

  • أفضل إجابة

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

هناك حل اخر ممكن ايضا جعل الكود بهده الطريقة 

Sub Filter_Class2()

Dim WSdest As Worksheet: Set WSdest = Sheets("TI3DAD")
Dim D1 As Object, D2 As Object, D3 As Object
Dim i%, a As Boolean, b As Boolean, c As Boolean
Dim x%, Y%, m%, z%, Réf, ky, Rng$
Set D1 = CreateObject("Scripting.Dictionary"): Set D2 = CreateObject("Scripting.Dictionary")
Set D3 = CreateObject("Scripting.Dictionary")
    
  With WSdest
  Application.ScreenUpdating = False
   WSdest.Range("M4:V32,X4:AG32,AI4:AR32").ClearContents

i = 7
Do While i <= .Rows.Count
If WSdest.Cells(i, 2) <> "" And WSdest.Cells(i, 2) <> HasFormula Then

       Rng = Mid(Trim(WSdest.Cells(i, 2)), 1, 1)
            Select Case Rng
                Case "3": a = True: b = False: c = False
                Case "2": b = True: a = False: c = False
                Case Else: b = False: a = False: c = True
            End Select
            Réf = Application.Transpose(.Cells(i, 2).Resize(, 13))
            Réf = Application.Transpose(Réf)
            If a Then
                D3(z) = Join(Réf, "*"): z = z + 1
            ElseIf b Then
                D2(Y) = Join(Réf, "*"): Y = Y + 1
            Else
                D1(x) = Join(Réf, "*"): x = x + 1
            End If
            i = i + 1
        Else
Exit Do
End If
Loop
m = 4
If D3.Count Then
            For Each ky In D3
                WSdest.Cells(m, "M").Resize(, 13) = Split(D3(ky), "*")
                m = m + 1
            Next ky
        End If
m = 4
If D2.Count Then
            For Each ky In D2
                WSdest.Cells(m, "X").Resize(, 13) = Split(D2(ky), "*")
                m = m + 1
            Next ky
        End If
m = 4
If D1.Count Then
            For Each ky In D1
               WSdest.Cells(m, "AI").Resize(, 13) = Split(D1(ky), "*")
                m = m + 1
            Next ky
         End If
        WSdest.Range("M4").CurrentRegion.Value = WSdest.Range("M4").CurrentRegion.Value
        WSdest.Range("X4").CurrentRegion.Value = WSdest.Range("X4").CurrentRegion.Value
        WSdest.Range("AI4").CurrentRegion.Value = WSdest.Range("AI4").CurrentRegion.Value
   End With
    
End Sub

 

تقرير المصلحة.xlsm

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

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