Excel宏可以处理工作簿中的所有工作表

时间:2013-12-02 16:23:26

标签: excel

尝试让宏工作在工作簿中的所有工作表上 我想要 将选择复制到同一工作表中的单独位置,但仅粘贴值。

然后根据第一列在新位置对选择进行排序。

这就是我所拥有的

Sub SortALLsheets()
Dim wsheet As Worksheet

For Each wsheet In ActiveWorkbook.Worksheets
Sheets(wsheet.Name).Select
    Range("AJ4:AK1732").Select
    Selection.Copy
    Range("AP4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("AP4:AQ1732").Select
    WS.Sort.SortFields.Add Key:=Range("AP4:AP1732"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With WS.Sort
        .SetRange Range("AP4:AQ1732")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

Next wsheet

End Sub

我在Ws.sort行上出现错误

所有援助都非常适合 谢谢 罗纳德

1 个答案:

答案 0 :(得分:1)

excel宏中很少需要选择。试试这个更新。

Sub SortALLsheets()
Dim wsheet As Worksheet

For Each wsheet In ActiveWorkbook.Worksheets
    wsheet.Range("AP4:AQ1732").value=wsheet.Range("AJ4:AK1732").value
    wsheet.Sort.SortFields.Add Key:=wsheet.Range("AP4:AP1732"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With wsheet.Sort
        .SetRange wsheet.Range("AP4:AQ1732")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

Next wsheet

End Sub