Макрос VBA в Excel для скрытия всех не выбранных листов

Я использовал следующий код макроса VBA ниже, чтобы скрыть все, кроме активного листа:

    Sub HideWorksheets()
    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> ThisWorkbook.ActiveSheet.Name Then
            ws.Visible = xlSheetHidden
        End If
    Next ws
End Sub

Есть ли варианты расширить его, чтобы он скрывал все, кроме выбранных листов?

1 ответ

Решение

Вам необходимо получить доступ к Windows (#). SelectedSheets. Один из способов - скрыть все, кроме ActiveSheet, а затем показать все выбранные.

Option Explicit

Sub HideWorksheets()
    Dim ws As Worksheet

    Application.ScreenUpdating = False
    ' Hide all except activeone
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> ThisWorkbook.ActiveSheet.Name Then ws.Visible = xlSheetHidden
    Next
    ' Unhide selected worksheets
    For Each ws In ThisWorkbook.Windows(1).SelectedSheets
        ws.Visible = xlSheetVisible
    Next ws
    Application.ScreenUpdating = True
End Sub
Другие вопросы по тегам