首页 文章

Excel宏:对每个工作表应用排序

提问于
浏览
0

这是我用来对除两个页面之外的每个页面应用排序的代码 . 系统抛出以下错误 . “范围类的选择方法失败” .

Private Sub CommandButton3_Click()Dim ws1 As Worksheet

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

结束子

请帮忙 .

1 回答

  • 0

    我会在 Selecting 范围之前 Select 工作表 . 更换:

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

    有:

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

    如果您在后面的代码中使用 .Range() 而不是 Range() ,则可能不需要这些 Selections . 此外,因为 ws1 是工作表对象,所以:

    ActiveWorkbook.Worksheets(ws1)
    

    应该替换为:

    ActiveWorkbook.Worksheets(ws1.Name)
    

    代码可能存在其他问题 .

相关问题