我正在尝试从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
任何人都可以说出错误可能是什么。 提前谢谢。
答案 0 :(得分:1)
就像我在上面的评论中提到的那样,你还没有完全限定你的范围对象
您在ExlWS
和Range("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