السلام عليكم
هذا شرح للكود
Sub Macro1()
Dim iNm As String
Dim Lr As Long, i As Long
Dim R As Integer
Dim d1 As Double, d2 As Double
''''''''''''''''
' iNm اسم الحساب يتم حفظه في المتغير
iNm = Range("B1").Value
' d1 التاريخ الاول يتم حفظه في المتغير
d1 = Range("B2").Value2
' d2 التاريخ الثاني يتم حفظه في المتغير
d2 = Range("B3").Value2
''''''''''''''''
' مسح كشف الحساب
Range("D6:K35").ClearContents
''''''''''''''''
' تعطيل اهتزاز الشاشة
Application.ScreenUpdating = False
With ورقة1
' اخر صف للعمود 3 في اليومية
Lr = .Cells(.Rows.Count, "C").End(xlUp).Row
' سلسلة تبدا من الصف 6 الى اخر صف في اليومية
For i = 6 To Lr
' مقارنة اسم الحساب في العمود 3 والعمود 4 من اليومية
If iNm = CStr(.Cells(i, "C")) Or iNm = CStr(.Cells(i, "D")) Then
' مقارنة التاريخ في العمود 6 ما بين الفترتين
Select Case .Cells(i, "F").Value2
Case d1 To d2
R = R + 1
' نقل الترقيم في العمود 4 من الكشف
Cells(R + 5, "D").Value = R
' نقل 4 اعمدة من اليومية الى الكشف ابتداءا من العمود 6
Cells(R + 5, "F").Resize(1, 4).Value = .Cells(i, "F").Resize(1, 4).Value
' يتم مقارنة اسم الحساب مع العمود 3 في اليومية
If iNm = CStr(.Cells(i, "C")) Then
' اذا كان صح ينقل القيمة في العمود 10 قيمة المدين
Cells(R + 5, "J").Value = .Cells(i, "J").Value
Else
' اذا كان خطا ينقل القيمة في العمود 11 قيمة الدائن
Cells(R + 5, "K").Value = .Cells(i, "K").Value
End If
End Select
End If
Next
End With
' تفعيل اهتزاز الشاشة
Application.ScreenUpdating = True
End Sub