Добрый день. Прошу помощи с неясным для меня вопросом.
Пытаюсь разобраться с активацией макроса по активации листа ("Worksheet_Activate()")
Задача макроса: при активации листа (Лист1) требуется выполнение сортировки данных в таблице на другом листе (Таблица2 на Служебный). Запись макроса выдала такой код:
Код
Worksheets("Служебный").ListObjects("Таблица2").Sort.SortFields.Clear
Worksheets("Служебный").ListObjects("Таблица2").Sort.SortFields.Add Key:=Range("Таблица2[[#All],[Год]]"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Служебный").ListObjects("Таблица2").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Если этот макрос запускать с кнопки - все отлично. Но когда пытаюсь добавить его к коду листа (через ПКМ на названии листа и "показать код"), то получаю Run-time error '1004': Method 'Range' of object '_Worksheet' failed.
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
Private Sub Worksheet_Activate()
Worksheets("Служебный").ListObjects("Таблица2").Sort.SortFields.Clear
Worksheets("Служебный").ListObjects("Таблица2").Sort.SortFields.Add Key:=Range("Таблица2[[#All],[Год]]"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Служебный").ListObjects("Таблица2").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Попробуйте так. Для Range нужно было тоже лист указать
Код
Private Sub Worksheet_Activate()
With Worksheets("Служебный").ListObjects("Таблица2").Sort
.SortFields.Clear
.SortFields.Add Key:=Worksheets("Служебный").Range("Таблица2[[#All],[Год]]"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Toheno, пожалуйста. Тут подробности, если интересно…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄