جرب هذا الملف
الكود
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$H$1" And Target.Count = 1 Then
sort_please
End If
Application.EnableEvents = True
End Sub
'=========================
Sub sort_please()
Dim Rg As Range
Dim s
Dim ro%: ro = Range("b2", Range("b1").End(4)).Rows.Count + 1
Set Rg = Range("a1").Resize(ro, 3)
Rg.Sort key1:=Cells(1, Range("h1")), _
Order1:=IIf(Range("h1") = 2, 2, 1), Header:=2
s = "Row( 1:" & ro & ")"
Range("a1").Resize(ro) = Evaluate(s)
End Sub
الملف مرفق
0Choose_Num_sort.xlsm