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

我正在尝试从Excel表A的列A中sorting。 我logging了这个macros,并通过我的工作表对象replace了这个工作表来编写子程序。 尽pipe直到这一行的代码工作正常,但我仍然有以下错误,而且据我所知,声明没有问题。 错误:运行时错误'-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 

任何人都可以告诉可能是什么错误。 先谢谢你。

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

您在Range("A2").Range("A2:B"... Range("A2")之前缺lessExlWS .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后xl2007 +,我从来没有使用macroslogging器给我的数据sorting的代码。 我仍然使用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