Arrays 对具有相同范围的多张图纸进行排序

Arrays 对具有相同范围的多张图纸进行排序,arrays,vba,excel,Arrays,Vba,Excel,尝试对多个工作表进行排序时,使用了一个数组,但不幸的是出现了“无法设置数组”错误。不知道这里做错了什么。这是我的密码: Sub Macro1() Dim ws() As Variant Dim wb As Workbook Set wb = ThisWorkbook Set ws() = wb.Sheets(Array("Sheet1", "Sheet2", "Sheet3")) ' ' Macro1 Macro ' ' ws.Sort.SortFields.Clear ws.Sort.So

尝试对多个工作表进行排序时,使用了一个数组,但不幸的是出现了“无法设置数组”错误。不知道这里做错了什么。这是我的密码:

Sub Macro1()

Dim ws() As Variant
Dim wb As Workbook
Set wb = ThisWorkbook
Set ws() = wb.Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
'
' Macro1 Macro
'

'
ws.Sort.SortFields.Clear
ws.Sort.SortFields.Add Key:=Range("A1"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ws.Sort
    .SetRange Range("A1:B6")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
End Sub

您所指的是一个数组,其中应指的是一个工作表。您将
ws
声明为Variant&此变量没有
.Sort
等属性

请注意,数组可以用作工作表名称的快捷方式,而不是
.Sheets(“”
对象的快捷方式

Sub Macro1()

Dim ws() As Variant
Dim wb As Workbook
Set wb = ThisWorkbook
ws() = Array("Sheet1", "Sheet2", "Sheet3")
Dim i as Integer

For i = 0 To 2
    wb.Sheets(ws(i)).Sort.SortFields.Clear
    wb.Sheets(ws(i)).Sort.SortFields.Add Key:=Range("A1"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With wb.Sheets(ws(i)).Sort
    .SetRange Range("A1:B6")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
Next i

End Sub

记录的排序语法远远超出了实际需要

sub macro2()
    dim w as long, lr as long, wss as variant

    wss = Array("Sheet1", "Sheet2", "Sheet3")

    for w = lbound(wss) to ubound(wss)
        with thisworkbook.worksheets(wss(w))
            lr = application.max(.cells(.rows.count, "a").end(xlup).row, _
                                 .cells(.rows.count, "b").end(xlup).row)
            with .range(.cells(1, "a"), .cells(lr, "b"))
                .Cells.Sort Key1:=.Columns(1), Order1:=xlAscending, _
                            Orientation:=xlTopToBottom, Header:=xlNo
            end with
        end with
    next w
end sub

你要整理多少张纸?总共有多少张?您可以只对工作表中的每个ws使用
@urderboy总共3张工作表。我有一张我不想看到的母版纸,我发现在I=lbound(ws)到ubound(ws)中使用
总是一个好主意。这样,如果使用了选项Base 1,就没有问题了。如果从数组中添加/删除,则不需要记住更改。您非常简洁地处理了variant array vs worksheets object collection。我只会重复你指出和纠正的东西,所以我将努力指向其他不足之处。