Выполнить код на нескольких листах - PullRequest
0 голосов
/ 18 ноября 2011

У меня есть этот код.

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

Снятие защиты, обновление данных и защита. В настоящее время он запускается с кнопки на активном листе. Я хочу, чтобы кнопка делала одно и то же для двух разных листов.

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Вот пример того, как вы можете настроить массив листов для просмотра и использовать оператор 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
0 голосов
/ 18 ноября 2011

Вы ищете ActiveWorkbook.Sheets(someName).

...