2013-06-05 59 views
1

對不起張貼的flury,我試圖完成一個項目(有似乎總是一件事)自動分類到最後一列

我特林自動分類到最後一列在F2開始我有以下但不工作

感謝

Sub Sort() 

Dim lastRow As Long 
Dim lastCol As Long 
Dim ws As Worksheet 

Set ws = Sheets("sheet1") 

lastRow = ws.Range("F" & ws.Rows.Count).End(xlUp).Row 
lastCol = Cells(2, ws.Columns.Count).End(xlToLeft).Column 

With Sheets("Sheet1") 
    ws.Range(ws.Range("F2"), ws.Cells(lastRow, lastCol)).Sort _ 
      Key1:=Range("lastCol"), Order1:=xlAscending, Header:=xlNo, _ 
      OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ 
      DataOption1:=xlSortNormal 
End With 
End Sub 

回答

2

的鍵1的值必須是一個範圍。您正在嘗試使用最後一列的號碼,即使刪除了引號,也不起作用。

更換Key1:=Range("lastCol")Key1:=Cells(2, lastCol)

注意,您可以使用GetColumnLetter功能我包括在我前面的回答得到了LASTCOL列的字母。如果您有該字母,則可以使用此語法代替Cells版本: Key1:=Range(myCol & 2)

要確保知道您正在排序的內容,可以添加一點調試代碼。您也可以使用立即窗口和觀察窗口來解決這個問題。

這種替換整個子:

Sub Sort() 

Dim lastRow As Long 
Dim lastCol As Long 
Dim ws As Worksheet 
Dim rng As Range 
Dim sortRng As Range 

Set ws = Sheets("sheet1") 

lastRow = ws.Range("F" & ws.Rows.Count).End(xlUp).Row 
lastCol = Cells(2, ws.Columns.Count).End(xlToLeft).Column 

Set rng = ws.Range(ws.Range("F2"), ws.Cells(lastRow, lastCol)) 
Set sortRng = ws.Cells(lastRow, lastCol) 
MsgBox "I will sort this range: " & rng.Address & _ 
      " using this column: " & sortRng 

rng.Sort Key1:=sortRng, Order1:=xlAscending, Header:=xlNo, _ 
      OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ 
      DataOption1:=xlSortNormal 

End Sub 
+0

你好餐飲部負責人,我所做的更改,子不錯誤,但沒有那種要麼 – xyz

+0

完美,謝謝 – xyz

+0

我已經編輯我的回答幫助你弄清楚爲什麼它沒有按你期望的方式排序。確保你有範圍和標準設置正確,它應該工作。 –