Просто повторим ответ Джипеда здесь, но с несколько иным взятием:
1) myline
действительно должно быть определено как Long или Integer
2) Диапазоны, объявленные с Key:=Range("A1")
должен быть определен как тот же самый рабочий лист
3) Клавиши для D
и J
находятся за пределами .setRange
, который также должен быть определен как находящийся на том же рабочем листе также
Я придерживался того же кода, но добавил определение ws
листа для всех диапазонов и изменил ваш установленный диапазон, включив в него столбец J
Sub SortMultipleColumns(myline As Long)
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Result-Inactive")
With ws.Sort
.SortFields.Clear
.SortFields.Add Key:=ws.Range("A1"), Order:=xlAscending
.SortFields.Add Key:=ws.Range("D1"), Order:=xlAscending
.SortFields.Add Key:=ws.Range("J1"), Order:=xlAscending
.SetRange ws.Range("A1:J" & myline)
.Header = xlYes
.Apply
End With
End Sub
Я предполагаю myline
потому что иногда вы хотите отсортировать только верхний набор данных.Я также добавил строку к clear
всем полям сортировки, на случай, если вы запустите на этом листе много разных сортировщиков.