通过调用sub将代码运行到多个工作表

时间:2015-07-09 13:39:34

标签: excel vba excel-vba

我正在将代码应用于多个工作表。但是,问题是我正在调用一个包含代码的sub in循环(Call sort),最后调用其他sub等等。我希望为一张纸调用所有子,然后转到下一张并执行相同的任务。我有三张名为“5”,“6”和“7”的纸张(也可以更多)。这是我正在申请的代码:

Sub code()
Dim wsarray As Sheets

Set wsarray = ActiveWorkbook.Sheets(Array("5", "6", "7"))

For Each sheetobject In wsarray
sheetobject.Select
Call Sort
Next
End Sub

此代码仅为7提供正确的输出。我不知道如何解决这个问题。请帮忙。

2 个答案:

答案 0 :(得分:0)

我不确定使用带有工作表名称的数组,但另一种方法是循环遍历所有工作表,如果它是5,6或7,则运行代码:

dim wsht as Worksheet

for each wsht in Activeworkbook
    If wsht.name = "5" or wsht.name = "6" or wsht.name = "7" Then
         With worksheets(wsht.name)
              Call Sort
         end with
    End if
next wsht

编辑:或者,这可能适用于数组 - 我会声明你自己的数组先存储它们,然后调用那个数组: (改编自here

Sub Test()

Dim myArray(1 To 3) As String, x
myArray(1) = "5"
myArray(2) = "6"
myArray(3) = "7"

For Each x In myArray
    Sheets(x).Select
    Call Sort
Next x

End Sub

答案 1 :(得分:0)

如果每个工作表中都有相同的子名称,请执行以下操作:

public sub subname()
dim wsht as Worksheet

for each wsht in Worksheets
    Activeworkbook.sheets(wsht.name).sort
next wsht
end sub