Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("G:G")) Is Nothing Then Range("G1").Sort Key1:=Range("G1"), _ Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, _ Orientation:=xlTopToBottom End If End Sub
[/vba]
Неудобство в том, что столбец "G" у меня формируется на основании сложения и умножения других ячеек, и данный макрос автоматически произведёт сортировку только если я зайду в любую ячейку G и затем нажму энтер. А хотелось бы без этого лишнего движения, чтобы автоматически производилась сортировка. +нужна сортировка не по возрастанию а по убыванию.
Использую данный код: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("G:G")) Is Nothing Then Range("G1").Sort Key1:=Range("G1"), _ Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, _ Orientation:=xlTopToBottom End If End Sub
[/vba]
Неудобство в том, что столбец "G" у меня формируется на основании сложения и умножения других ячеек, и данный макрос автоматически произведёт сортировку только если я зайду в любую ячейку G и затем нажму энтер. А хотелось бы без этого лишнего движения, чтобы автоматически производилась сортировка. +нужна сортировка не по возрастанию а по убыванию.stalber
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next With Me r1_ = .UsedRange.Rows.Count If Not Intersect(Target, Range("D1:F" & r1_)) Is Nothing Then With .Sort.SortFields .Clear .Add Key:=Range("G1:G" & r1_), Order:=xlDescending End With With .Sort .SetRange Range("D1:G" & r1_) .Apply End With End If End With End Sub
[/vba]
Так нужно? [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next With Me r1_ = .UsedRange.Rows.Count If Not Intersect(Target, Range("D1:F" & r1_)) Is Nothing Then With .Sort.SortFields .Clear .Add Key:=Range("G1:G" & r1_), Order:=xlDescending End With With .Sort .SetRange Range("D1:G" & r1_) .Apply End With End If End With End Sub