2017-03-01 77 views
0

我想根據第二行(新舊)列的值(Date)對工作表進行排序,從第二行開始直到結束。
我寫了代碼,但總是出現錯誤:1004,排序引用無效。有人碰巧知道解決方案嗎?
謝謝。
Workbooks("Task2.xlsm").Worksheets("Data").Column("A:CA").Sort key1:=Range("H2"), order1:=xlDescending, Header:=xlYes自第二行開始按列值排序工作表

回答

0

我錄製一個宏,我找到了答案(它可以簡化):

Workbooks("Task2.xlsm").Worksheets("Data").AutoFilter.Sort.SortFields.Clear 
    Workbooks("Task2.xlsm").Worksheets("Data").AutoFilter.Sort.SortFields.Add Key:=Range("H1"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortTextAsNumbers 
    With Workbooks("Task2.xlsm").Worksheets("Data").AutoFilter.Sort 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
0

做你想做key1:=Range("H:H")? 我假設H列是你的鑰匙,而不是單個細胞H2。

+0

謝謝桑傑! – Francis

0

變化ColumnColumns(錯字中發佈您的代碼,我認爲)

然後你就會有一個運行時錯誤,每當Worksheets("Data")是不是當前活動工作表。最好的辦法是完全避免這種類型的錯誤,並用的Range("H2")前whcih使得指明確在指定的紙張合格範圍

With Workbooks("Task2.xlsm").Worksheets("Data") 
    .Column("A:CA").Sort key1:=.Range("H2"), order1:=xlDescending, Header:=xlYes 
End with 
           ^^^^ 

通知的.(點)總是工作with條款。沒有這一點,你正在使用不合格的範圍,它指的是當前活動的工作表。

+0

謝謝A.S.H.我也找到了答案。 – Francis

相關問題