2016-04-12 19 views
1

複数の列を持つシートのデータを、まず列B(アルファベット順)、次に列C(カスタム注文"G、D、M、F" - これらは欄に表示される唯一の値です)。しかし、コードを実行しようとすると、エラーが発生します。Excelでカスタムオーダーを使用してソートするとエラーが発生する10024

1004 - Unable to get the Sort property of the Range class 

ここで私が作業していることがあります。以前の私は

Dim lastrow As Long 
lastrow = Cells(Rows.Count, 2).End(xlUp).Row 

が続いてここで私はエラーを取得する部分です持っているコードで:

Range("A2:Y" & lastrow).Sort.SortFields. _ 
Add Key:=Range("C2:C" & lastrow), SortOn:=xlSortOnValues, Order:=xlAscending, _ 
DataOption:=xlSortNormal 
Range("A2:Y" & lastrow).Sort.SortFields. _ 
Add Key:=Range("B2:B" & lastrow), SortOn:=xlSortOnValues, Order:=xlAscending, _ 
CustomOrder:="G,D,M,F", DataOption:=xlSortNormal 
+0

使用しているExcelのバージョンは何ですか?また、可能性があります関連するhttp://stackoverflow.com/questions/22366188/vba-type-mismatch-on-customorder –

+0

'CustomOrder:=" G、D、M、F "、DataOption:= xlSortNormal' GDMFメンタルは別々であるか、それとも1つのものであるか? –

答えて

0

あなたが最初の配列としてカスタムリストにカスタムソート順を追加する必要があるとしています。並べ替えるときは、2回ソートする必要があります。セカンダリカスタムソート順を実行してから、プライマリ非カスタムキーを実行します。私はあなたの行で何が起こっているか全くわからないんだけど

Dim vCOLs As Variant 

vCOLs = Array("G", "D", "M", "F") 

With Application 
    '.ScreenUpdating = False 
    '.EnableEvents = False 
    .AddCustomList ListArray:=vCOLs 
End With 

With Worksheets("sheet2") 
    .Sort.SortFields.Clear 
    With .Cells(1, 1).CurrentRegion 
     'first sort on the secondary custom sort on column B 
     .Cells.Sort Key1:=.Columns(2), Order1:=xlAscending, _ 
        Orientation:=xlTopToBottom, Header:=xlYes, _ 
        OrderCustom:=Application.CustomListCount + 1 
     'next sort on the primary key; column C 
     .Cells.Sort Key1:=.Columns(3), Order1:=xlAscending, _ 
        Orientation:=xlTopToBottom, Header:=xlYes 

    End With 
    .Sort.SortFields.Clear 
End With 

1.あなたの元のコードは、行2の並べ替えを開始しますが、あなたはヘッダ行を持っているかどうかを示しません。

+0

これは完璧に動作します、ありがとうございます。行1は確かにヘッダー行ですが、私はおそらくこれを述べておきました。 – Kierks

関連する問題