Страницы: 1
RSS
Сортировка диапазона ячеек по событию Worksheet_Deactivate
 
Добрый день.  
На одном листе находится список компаний, который нужно сортировать по алфавиту А-Я при уходе с этого листа.  
 
Запись макроса с помощью эксель помогла, но код получается огромным  
 
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()  
   Me.Range("Область_печати").Sort Me.Range("A1"), 1, , , , , , 2  
End Sub
Я сам - дурнее всякого примера! ...
 
Огромное спасибо ! О такой минимизации я и не мечтал!
 
Нет такого макроса, к-рый нельзя было бы сократить хоть на строчку:-)  
Private Sub Worksheet_Deactivate(): [Область_печати].Sort [A1], 1, , , , , , 2: End Sub
Я сам - дурнее всякого примера! ...
Страницы: 1
Читают тему
Наверх