Excel VBA заказной сортировки - PullRequest
0 голосов
/ 17 октября 2018

Привет. Я бы хотел отсортировать весь столбец C на основе значений (критический, высокий, средний, низкий).Я запускаю этот код на листе с поддержкой макросов

Вот мой код.

Sub run()
Range("C:C").Sort Key1:=Range("C1"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:="Critical,High,Medium,Low", DataOption:=xlSortNormal
End Sub

Он не работал, так как указана ошибка.Нет аргументовКак решить эту проблему?Спасибо.

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Ваши пользовательские критерии сортировки должны быть в массиве.Попробуйте,

Sub runSortC()
    Dim vCustom_Sort As Variant, rr As Long

    vCustom_Sort = Array("Critical","High","Medium","Low", Chr(42))
    Application.AddCustomList ListArray:=vCustom_Sort

    with Range("C:C")
        .parent.Sort.SortFields.Clear

        'sort on custom order with header
        .Cells.Sort Key1:=.Columns(1), Order1:=xlAscending, _
                    Orientation:=xlTopToBottom, Header:=xlYes, MatchCase:=False, _
                    OrderCustom:=Application.CustomListCount + 1

        .parent.Sort.SortFields.Clear

    End With

End Sub

Если это находится в общедоступном модуле, поможет ссылка на квалифицированную родительскую таблицу.

0 голосов
/ 17 октября 2018

Попробуйте:

ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range("A:A") _
    , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
    "Critical,High,Medium,Low", DataOption:=xlSortNormal

    With ActiveWorkbook.Worksheets("Sheet1").Sort
    .SetRange Range("A:A")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...