在多个工作表上运行代码

时间:2011-11-18 15:06:29

标签: excel excel-vba password-protection excel-2010 vba

我有这段代码。

Const pw   As String = "password"    '<-change password here
ActiveSheet.Unprotect pw
Range("B7").QueryTable.Refresh BackgroundQuery:=False
ActiveSheet.Protect pw

它取消保护,刷新数据和重新保护。目前,它从活动工作表上的按钮运行。我希望按钮能为两张不同的纸张做同样的事情。

2 个答案:

答案 0 :(得分:1)

以下是一个示例,说明如何设置要经过的工作表数组并使用With语句来实现更清晰的代码。如果要对所有工作表执行此操作,可以简单地说“对于工作表中的每个工作表”而不需要声明工作表数组。 :)

Sub Test()

Dim pw As String
pw = "password"
Dim sheet As Variant
Dim refreshSheets(1 To 2) As Worksheet

Set refreshSheets(1) = sheets(1)
Set refreshSheets(2) = sheets(2)

For Each sheet In refreshSheets
    With sheet
        .Unprotect pw
        .Range("B7").QueryTables.Refresh BackgroundQuery:=False
        .Protect pw
    End With
Next

End Sub

答案 1 :(得分:0)

您正在寻找ActiveWorkbook.Sheets(someName)