بارك الله بك استاذ عماد
عندي ملاحظة بالنسبة Dim أرجو تقبلها
عند اعلان المتغيرات بصيغة
dim lr,p,x as long
فان اكسل يأخذ اخر متغير بشكل long والباقيين يشكل Variant
يمكن التحقق من ذلك بواسطة Local Window
لذا يجب الكتابة بهذا الشكل Dim lr as long,x as long ,p as long زيادة في اثراء الموضوع هذا الكود
CODE
Sub filter_for_ME()
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
Dim S_sh As Worksheet: Set S_sh = Sheets("Sheet1")
Dim T_sh As Worksheet: Set T_sh = Sheets("Sheet2")
Dim My_Table As Range: Set My_Table = S_sh.Range("A1").CurrentRegion
T_sh.Range("a10").CurrentRegion.ClearContents
T_sh.Range("q2").Formula = "=Sheet1!A2=$B$3"
My_Table.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=T_sh.Range("Q1:q2"), _
CopyToRange:=T_sh.Range("A10:C10")
T_sh.Range("q2").ClearContents
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
End Sub
الملف مرفق