2017-01-18 56 views
1

我有這樣的代碼進行排序一個Excel工作表用VBA給錯誤的結果

'for the ascending order 
Range("A14:CB" & lastRow).Sort key1:=Range(Col & "14:" & Col & lastRow), Order1:=xlAscending, Header:=xlNo, key2:=Range("C14:C" & lastRow), Order2:=xlAscending, Header:=xlNo 
'for the descending order 
Range("A14:CB" & lastRow).Sort key1:=Range(Col & "14:" & Col & lastRow), Order1:=xlDescending, Header:=xlNo, key2:=Range("C14:C" & lastRow), Order2:=xlAscending, Header:=xlNo 

此排序是我所得到的,當我做升序排序上Col=J

enter image description here

,這是什麼當我做降序排序時得到Col=J

enter image description here

兩者顯然都是錯誤的。有沒有我在VBA代碼中看不到的錯誤?

回答

1

Excel的分類效果很好,例如選擇一個範圍並運行以下命令:

Option Explicit 

Sub TestMe() 

    Selection.Sort key1:=Selection, Order1:=xlDescending 

End Sub 

在您的代碼中,您應該檢查定義範圍的變量。例如。 lastRowCol。寫這樣的事情在代碼的頂部:

debug.print lastRow 
debug.print Col 
+0

'lastRow'是17(數據始於14)and'Col'是10 –

+0

那麼你怎麼在這裏這件事期待(選擇J列時) '範圍(Col&「14:」&Col&lastRow)'例如,如果你去到直接窗口,並且你寫了'Col&'14:「&Col&lastRow'它應該給你什麼?我想你有一個地方'在錯誤恢復下一個'? – Vityata

+0

'On Error Resume Next'已被刪除,但問題仍然存在。從範圍(...)'我希望作爲'範圍(「J14:J17」)' –