Добрый день. С первого листа данные с помощью макроса копируются в таблицу на другом листе. На листе с таблицей есть макрос автосортировки, но он почему работает некорректно, в чем может проблема? [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub [A1].CurrentRegion.Sort [A1], xlAscending, Header:=xlYes End Sub
[/vba]
Добрый день. С первого листа данные с помощью макроса копируются в таблицу на другом листе. На листе с таблицей есть макрос автосортировки, но он почему работает некорректно, в чем может проблема? [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub [A1].CurrentRegion.Sort [A1], xlAscending, Header:=xlYes End Sub
Нет, все таки проблема была в макросе. Значения даты воспринимались как обычные числа, и поэтому неправильно сортировались, при любом формате ячейке. В общем изменил макрос, теперь все работает как надо. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A:E")) Is Nothing Then ActiveWorkbook.Worksheets("Таблица").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Таблица").Sort.SortFields.Add Key:=Range("A1") _ , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _ "янв,фев,мар,апр,май,июн,июл,авг,сен,окт,ноя,дек", DataOption:= _ xlSortTextAsNumbers With ActiveWorkbook.Worksheets("Таблица").Sort .SetRange Range("A:E") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End If End Sub
[/vba]
Нет, все таки проблема была в макросе. Значения даты воспринимались как обычные числа, и поэтому неправильно сортировались, при любом формате ячейке. В общем изменил макрос, теперь все работает как надо. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A:E")) Is Nothing Then ActiveWorkbook.Worksheets("Таблица").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Таблица").Sort.SortFields.Add Key:=Range("A1") _ , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _ "янв,фев,мар,апр,май,июн,июл,авг,сен,окт,ноя,дек", DataOption:= _ xlSortTextAsNumbers With ActiveWorkbook.Worksheets("Таблица").Sort .SetRange Range("A:E") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End If End Sub