2017-04-06 22 views
0

使用下面的代碼,它似乎在過去一直工作到現在...最終目標是按特定順序對選定表格進行排序。表格排序宏(僅移動選定的表格)不起作用

Sub SortWksByCell() 
    Dim i As Integer 
    Dim j As Integer 
    Dim wss As Sheets 

    Set wss = ActiveWindow.SelectedSheets 
    For i = 1 To wss.Count 
     For j = i + 1 To wss.Count 
      If UCase(wss(i).Range("q1")) <= _ 
       UCase(wss(j).Range("q1")) Then 
        wss(j).Move Before:=wss(i) 
      End If 
     Next 
    Next 
End Sub 
+0

它適合我。運行它時什麼不起作用? – YowE3K

+0

它幾乎就像中途停止,但我沒有得到任何錯誤。表單移動但是以無意義的順序移動。注意:我正在使用60張以上的紙張。 – chs

+0

好的 - 我只檢查了代碼成功運行 - 我依賴於你的問題中的第一句話,暗示邏輯是正確的,它只是一個執行錯誤,但它聽起來像你有一個邏輯錯誤,因此(因此它從來沒有工作,或只爲有限的一組輸入條件工作)。在再次查看代碼時,排序不起作用,因爲您永遠不會在'wss'中更改工作表的位置 - 您只是在工作簿中更改其職位。 – YowE3K

回答

0

所有工作表,而不是選擇工作表進行排序,你可以使用:

Sub SortWksByCell() 
    Dim i As Integer 
    Dim j As Integer 
    Dim wss As Sheets 

    'Set wss = ActiveWindow.SelectedSheets 
    Set wss = Worksheets 
    For i = 1 To wss.Count 
     For j = i + 1 To wss.Count 
      If UCase(wss(i).Range("q1")) <= _ 
       UCase(wss(j).Range("q1")) Then 
        wss(j).Move Before:=wss(i) 
      End If 
     Next 
    Next 
End Sub 

我將它留給別人去工作,如何只選定的頁面排序。 (我需要我的早晨咖啡,然後才能進入。)