VBA错误对象'SortFields'的方法'添加'失败

时间:2013-12-10 10:29:35

标签: excel vba excel-vba

我正在尝试从Excel工作表的A列中对列表进行排序。我记录了宏并通过我的工作表对象替换activeworksheet来编写子例程。我仍然得到以下错误,即使这行代码工作正常,据我所知,声明没有问题。 错误:运行时错误'-2147417851(80010105) '方法'添加'对象'SortFields'失败。!

Dim ExlWB As Excel.Workbook
Dim ExlWS As Excel.Worksheet

Set ExlWB = ExlApp.Workbooks.Open(ThisWorkbook.Path & "\Sample.xlsx")
Set ExlWS = ExlWB.Sheets(1)

ExlWS.Range("$A$2:$B$" & Rows + 1).RemoveDuplicates Columns:=1, Header:=xlNo
ExlWS.Sort.SortFields.Clear
ExlWS.Sort.SortFields.Add Key:=Range("A2"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ExlWS.Sort
    .SetRange Range("A2:B" & ExlWS.Range("A1").End(xlDown).Row)
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

任何人都可以说出错误可能是什么。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

就像我在上面的评论中提到的那样,你还没有完全限定你的范围对象

您在ExlWSRange("A2")

之前缺少.Range("A2:B"...

您的代码可以写成

ExlWS.Sort.SortFields.Add Key:=ExlWS.Range("A2"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With ExlWS.Sort
    .SetRange ExlWS.Range("A2:B" & ExlWS.Range("A1").End(xlDown).Row)
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

BTW post xl2007 +,我从未使用过宏录制器给我的代码来排序数据。我仍然使用Excel 2003中的代码

例如

With ExlWS.Range("A2:B" & ExlWS.Range("A1").End(xlDown).Row)

    .Sort Key1:=ExlWS.Range("A2"), _
                Order1:=xlAscending, _
                Header:=xlGuess, _
                OrderCustom:=1, _
                MatchCase:=False, _
                Orientation:=xlTopToBottom, _
                DataOption1:=xlSortNormal
End With