Сводка: цикл макроса через определенный массив ws.Имя массива определяется в менеджере имен.Каким-то образом макрос перебирает дополнительный ws, который НЕ находится в массиве.
Цель состояла в том, чтобы заменить длинную подпрограмму вызова макроса для каждого ws, мне нужно выполнить код и узнать, как использовать именованный массив диапазона какони являются динамическими.
Код: (нашел его в stackoverflow, а затем настроил его для моей цели)
Public Sub Tester02()
Dim SH As Worksheet
Dim rng As Range
Dim rCell As Range
Set rng =
ActiveWorkbook.Sheets("ListOfSheets").Range("ListOfWorksheetsHRIB")
For Each SH In ActiveWorkbook.Worksheets
If Not IsError(Application.Match(SH.Name, rng, 0)) Then
Call SingleCtrRefreshHRIB
End If
Next SH
Worksheets("Dashboard").Activate
End Sub
По какой-то причине макрос проходит по дополнительному листу (Sheet1 = Dashboard).
В моем нетренированном макросе идет «Панель инструментов» после ПОСЛЕ того, как он прошел через указанный диапазон.Поэтому этот рабочий лист не должен быть включен.
Я могу запустить макрос, не активируя панель инструментов, и переместить курсор в соответствии с инструкциями.все же я хотел бы знать, почему он не работает, и узнать, как ограничить макрос определенным именованным диапазоном
Не уверен, что он актуален, но sub SingleCtrRefreshHRIB снимает защиту, обновляет фильтр и защищает ws в названном диапазоне..
С другой стороны, я был удивлен, увидев, что цикл не был действительно более эффективным (по времени), чем прохождение каждого отдельного ws.Более элегантный и, очевидно, динамичный, но не более быстрый.
При необходимости код вызываемого макроса (я уберу активацию и выделю в этом коде, как только смогу).
Sub SingleCtrRefreshHRIB()
'
' In active IB worksheet macro unprotects, refreshes the "ACTIVE" 12
field and reprotects for HR
'
Application.ScreenUpdating = False
ActiveSheet.Select
ActiveSheet.Unprotect
ActiveSheet.Range("$A$1:$AB$1051").AutoFilter Field:=12
ActiveSheet.Range("$A$1:$AB$1051").AutoFilter Field:=12, Criteria1:=
_"ACTIVE"
ActiveSheet.Select
ActiveSheet.Protect DrawingObjects:=False, Contents:=True,
Scenarios:= _False, AllowFormattingColumns:=True,
AllowFiltering:=True
End Sub
спасибо!