Vba 从第二行开始,按列的值对工作表进行排序

Vba 从第二行开始,按列的值对工作表进行排序,vba,excel,sorting,runtime-error,excel-2007,Vba,Excel,Sorting,Runtime Error,Excel 2007,我想根据列(新-旧)的值(日期)从第二行到最后对工作表进行排序。 我写了代码,但总是有一个错误:1004,排序引用无效。有人知道解决方案吗? 谢谢。 工作簿(“Task2.xlsm”)。工作表(“数据”)。列(“A:CA”)。排序键1:=Range(“H2”),排序键1:=xl降序,标题:=xlYes是否要key1:=Range(“H:H”)? 我假设H列是您的键,而不是单个单元格H2。将列更改为列(我认为在发布代码时键入错误) 当工作表(“数据”)不是当前活动的工作表时,就会出现运行时错误。您

我想根据列(新-旧)的值(日期)从第二行到最后对工作表进行排序。
我写了代码,但总是有一个错误:1004,排序引用无效。有人知道解决方案吗?
谢谢。

工作簿(“Task2.xlsm”)。工作表(“数据”)。列(“A:CA”)。排序键1:=Range(“H2”),排序键1:=xl降序,标题:=xlYes
是否要
key1:=Range(“H:H”)?

我假设H列是您的键,而不是单个单元格H2。

更改为
(我认为在发布代码时键入错误)

工作表(“数据”)
不是当前活动的工作表时,就会出现运行时错误。您的最佳选择是完全避免此类错误,并始终使用合格的范围


请注意
范围(“H2”)
前面的
(点)使其明确引用
with
子句中指定的表格。否则,您将使用一个不合格的范围,该范围指的是当前活动的工作表。

我记录了一个宏,找到了答案(可以简化):


谢谢A.S.H.我也找到了答案。谢谢Sanjay!
With Workbooks("Task2.xlsm").Worksheets("Data")
    .Column("A:CA").Sort key1:=.Range("H2"), order1:=xlDescending, Header:=xlYes
End with
                              ^^^^
    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