метод Application.AddCustomList может содержать только строку, и если вы попытаетесь добавить числа (Range), как в примере выше, вы получите ошибку!
Я попробовал простые трюки и добавил вспомогательный столбец (из ID) и добавил также строку «abc» в значения обоих столбцов (D и H), как показано ниже:
A B C D ... H
PID ID Name HID SID
001 AAA abc001 abc001
001 002 BBB abc002 abc002
004 003 CCC abc003 abc004
004 DDD abc004 abc003
и столбец сортировки D:
sht.Sort.SortFields.Clear
sht.Sort.SortFields.Add Key:=Range("D1:D" & LastRow), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:=nSort, DataOption:=xlSortNormal
With sht.Sort
.SetRange Range("A1:D" & LastRow)
.Header = xlYes
.MatchCase = True
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
сейчас работает;)