Ошибка выполнения 438 в Excel при использовании функции сортировки

Я пытаюсь написать код, который удалит дубликаты из моего списка.

Он хорошо работал на моем Mac, но когда я попытался запустить его в Windows, я получил ошибку выполнения 438:

объект не поддерживает это свойство или метод.

Что пошло не так?

Range("E2:E150").Select
 ActiveWorkbook.Worksheets("NOS").Sort.SortFields.Clear
 ActiveWorkbook.Worksheets("NOS").Sort.SortFields.Add2 Key:=Range("E2"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
 With ActiveWorkbook.Worksheets("NOS").Sort
    .SetRange Range("E2:G150")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .Apply
 End With
Range("E1").Select

End Sub

person Dor    schedule 05.02.2019    source источник


Ответы (1)


Проблема в том, что вы, вероятно, используете версию Excel, выпущенную до 2016 года. noreferrer">метод .SortFields.Add2 был представлен в 2016 году. /excel.sortfields.add" rel="nofollow noreferrer">.SortFields.Add метод (в котором отсутствует возможность использования параметра SubField).

Вам может быть полезно прочитать Как избежать использования Select в Excel VBA, ваши утверждения .Select довольно бесполезны и не нужны.

With ActiveWorkbook.Worksheets("NOS").Sort
    .SortFields.Clear
    .SortFields.Add Key:=Range("E2"), _
                    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    .SetRange Range("E2:G150")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .Apply
End With
person Pᴇʜ    schedule 05.02.2019