Добрый день.
На одном листе находится список компаний, который нужно сортировать по алфавиту А-Я при уходе с этого листа.
Запись макроса с помощью эксель помогла, но код получается огромным
Private Sub Worksheet_Deactivate()
ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Add Key:=Range("A4"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Лист1").Sort
.SetRange Range("область_печати")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
На форуме нашел проще и подредактировал под себя:
Private Sub Worksheet_Deactivate()
Application.ScreenUpdating = False
Лист1.Range("Область_печати").Sort Key1:=Range(ActiveCell, ActiveCell.End(xlUp)), Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
Application.ScreenUpdating = True
End Sub
Но этот вариант не работает.
Помогите минимизировать код.
На одном листе находится список компаний, который нужно сортировать по алфавиту А-Я при уходе с этого листа.
Запись макроса с помощью эксель помогла, но код получается огромным
Private Sub Worksheet_Deactivate()
ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Add Key:=Range("A4"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Лист1").Sort
.SetRange Range("область_печати")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
На форуме нашел проще и подредактировал под себя:
Private Sub Worksheet_Deactivate()
Application.ScreenUpdating = False
Лист1.Range("Область_печати").Sort Key1:=Range(ActiveCell, ActiveCell.End(xlUp)), Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
Application.ScreenUpdating = True
End Sub
Но этот вариант не работает.
Помогите минимизировать код.