VBA Type Mismatch on CustomOrder

后端 未结 4 756
情歌与酒
情歌与酒 2020-12-11 05:12

I have this code which works great:

Sub NewSortTest()
    ActiveWorkbook.Worksheets(\"Sheet1\").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets(\"Sheet1\         


        
4条回答
  •  孤街浪徒
    2020-12-11 05:38

    I worked it out. You need to use a ListArray:

    Sub NewSortTest()
        Dim keyRange As Variant
        Dim sortNum As Long
    
        keyRange = Array("alpha", "bravo", "charlie", "delta", "echo", "foxtrot", "golf", "hotel", "india", "juliet")
    
        Application.AddCustomList ListArray:=keyRange
        sortNum = Application.CustomListCount
    
        ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add key:=Range("A1:A20"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:=sortNum, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Sheet1").Sort
            .SetRange Range("A1:B20")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub
    

提交回复
热议问题