2016-10-27 63 views
0

下面是我用於將排序應用於除兩個頁面以外的每個頁面的代碼。系統正在拋出以下錯誤。 「範圍級別選擇方法失敗」。Excel宏:對每張紙應用排序

私人小組CommandButton3_Click() 昏暗的WS1作爲工作表

For Each ws1 In Worksheets 
    If ws1.Name <> "Sheet1" And ws1.Name <> "Extra" Then 

**ws1.Range("A1:V1000").Select**  Something is wrong here I suspect 

ActiveWorkbook.Worksheets(ws1).Sort.SortFields.Clear 

ActiveWorkbook.Worksheets(ws1).Sort.SortFields.Add Key:=Range("I2:I1000") _ 
    , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 

ActiveWorkbook.Worksheets(ws1).Sort.SortFields.Add Key:=Range("T2:T1000") _ 
    , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 

With ActiveWorkbook.Worksheets(ws1).Sort 
    .SetRange Range("A1:V1000") 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 

End If 
Next ws1 

末次

請幫助。

回答

0

我會SelectSelecting之前的工作表範圍。替換:

ws1.Range("A1:V1000").Select 

有:

ws1.Select 
Range("A1:V1000").Select 

,如果你在下面的代碼中使用.Range()而非Range()你可能不需要這些Selections。此外,由於ws1是一個工作表對象,:

ActiveWorkbook.Worksheets(ws1) 

應該被替換:

ActiveWorkbook.Worksheets(ws1.Name) 

有可能是其他問題的代碼。

+0

非常感謝您的建議。我將其更改爲........................... ws1.Select ws1.Range(「A1:V1000」)。選擇並更改ActiveWorkbook .Worksheets(ws1)到ActiveWorkbook.Worksheets(ws1.Name)現在可以運行 – Navy

+0

@Navy謝謝您的反饋。 –

+1

@Navy - 請注意''ActiveWorkbook.Worksheets(ws1.Name)'可以縮短爲'ws1'。 – YowE3K