2013-12-10 37 views
1

我試圖從排序的Excel工作表的A列的列表。我記錄了這個宏,並通過我的工作表對象替換了activeworksheet來編寫子程序。儘管如此,我得到了下面的錯誤,即使代碼,直到這條線工作正常,據我所知,沒有與聲明沒有問題。 錯誤:運行時錯誤「-2147417851(80010105) 」 Method對象‘SortFields’的‘添加’失敗!VBA錯誤Method對象的'添加「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

它的一個很大的代碼,功能分爲幾類的感覺。我正在對數據執行大量操作,然後將其帶到Excel表單中。在那裏我刪除重複的數據並按升序排序。在將訂單設置爲升序之前,代碼工作正常。將嘗試在這裏放置更多線路供您參考。 –

+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 
+0

非常感謝亞洲時報Siddharth ......它的工作完全正常...謝謝。 :) –

+0

很高興能幫助:) –

相關問題