2017-04-06 79 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 

我将它留给别人去工作,如何只选定的页面排序。 (我需要我的早晨咖啡,然后才能进入。)