استاذنا ومشرفنا الغالى الاستاذ نزار :كنت قد اثقلت عليك من فتره فى موضوع فرز مع الحماية وتفضلت حضرتك بحلها بطريقة سحرية ولكنى لم استوعبها فى ذلك الوقت ونظراً لإنشغالى فى كنترول المدرسة والامتحانات لم ادرسها بوضوح إلا الأن والحمد لله استوعبتها بنجاح وللك جزيل الشكر والعرفان على هذا العمل الغالى .
وواجهتنى الان مشكله صغيره أعرف أنك ( إن شاء الله ) سوف تحلها لى وهى أن الكود السابق فى الملف يجعل الفرز على أساس العمود B وهذا جيد ولكنى حينما اربط عدة صفحات ببعضها ( وقد ارفقت لك مثالى السابق وحديثى هنا اقصد به الشيت الثانى فى هذا الملف ) أجد أن الفرز يدخل رقم الصفر الدال على ربط الصفحات ببعضها ضمن الفرز وهذا يخل بشكل الفرز .
باختصار حتى لا أطيل عليك أريد طريقة لاضافة جملة ( الفرز فى عمود B يشمل الخلايا التى قيمتها أكبر من الصفر فقط ) هذا طبعا على شكل تكملة للكود الموجود حالياً بالملف المرفق الذى تفضلت انت بتصميمه .
ولك وافر الشكر والعرفان واتمنى ان يكون الرد سريعاً
وعموما هذا هو الكود الذى تفضلت وارسلته :
Sub Rectangle1_Click()
'
' Rectangle1_Click Macro
' Macro recorded 4/17/2007 by neid
'
'
MyPassword = "123"
For Each MySheet In ActiveWorkbook.Sheets
MySheet.Protect _
Password:=MyPassword, _
DrawingObjects:=True, _
Contents:=True, _
Scenarios:=True, _
UserInterfaceOnly:=True
Next MySheet
Dim myTable As Range
Dim myColToSort As Long
Dim curWks As Worksheet
Dim mySortOrder As Long
Dim LastRow As Long
Dim iCol As Integer
Dim strCol As String
iCol = 20 '10 columns
strCol = "B" ' column to check for last row
Set curWks = ActiveSheet
With curWks
myColToSort = .Shapes(Application.Caller).TopLeftCell.Column
LastRow = .Cells(.Rows.Count, strCol).End(xlUp).Row
Set myTable = .Range("A9:B" & LastRow).Resize(, iCol)
If .Cells(myTable.Row + 1, myColToSort).Value _
< .Cells(LastRow, myColToSort).Value Then
mySortOrder = xlDescending
Else
mySortOrder = xlAscending
End If
myTable.Sort key1:=.Cells(myTable.Row, myColToSort), _
order1:=mySortOrder, _
header:=xlYes
End With
End Sub
CONTROL1.rar