Страницы: 1
RSS
VBA скрыть все неактивные (все невыбранные) листы в Excel
 
добрый день, ДРУЗЬЯ!
прошу помочь, нужен макрос который мог бы скрыть все невыбранные листы.
дело в том, что выбранные(активные) листы, их несколько.
есть такой в надстройке Kutools for Excel здесь.
hххps://ru.extendoffice.com/product/kutools-for-excel/show-or-hide-inactive-worksheets-in-one-workbook.html
но мне хотелось посмотреть как выглядит код и как работает.
заранее благодарю!
 
azma, вариант,
Код
Sub mrshkei22()
Dim sh As Worksheet, shSel As Worksheet, col As New Collection
For Each shSel In ActiveWindow.SelectedSheets
    col.Add shSel.Index, CStr(shSel.Index)
Next shSel
For Each sh In Worksheets
    For i = 1 To col.Count
        If sh.Index = col(i) Then x = 1
    Next i
     If x = 0 Then sh.Visible = xlSheetHidden
     x = 0
Next sh
End Sub
можно без коллекции
Код
Sub mrshkei()
Dim sh As Worksheet, shSel As Worksheet
For Each sh In Worksheets
For Each shSel In ActiveWindow.SelectedSheets
    If sh.Name = shSel.Name Then x = 1
Next shSel
    If x = 0 Then sh.Visible = xlSheetHidden
    x = 0
Next sh
End Sub
Изменено: Mershik - 25.04.2021 08:51:34
Не бойтесь совершенства. Вам его не достичь.
 
Код
For Each Sheet In Sheets
    Flag = False
    For Each SheetSelected In ActiveWorkbook.Windows(1).SelectedSheets
        If Sheet.Name = SheetSelected.Name Then
           Flag = True
            Exit For
        End If
    Next
    If Not Flag Then Sheet.Visible = xlSheetHidden
Next
По вопросам из тем форума, личку не читаю.
 
Mershik, БМВ огромное Вам спасибо!!!
 
Ведмедик, привет. Чтой-то ты перемудрил. Выделяем группу листов, топаем макрос... А скрылись совсем другие листы...
Оказывается, группа была выделена в ActiveWorkbook.Windows(2).  :D
 
Цитата
RAN написал:
Оказывается
ничего не знаю, что где выделено то там и не скрывается   :D  я ваще свой лимит строк еще тут израсходовал.
По вопросам из тем форума, личку не читаю.
 
Ничего не вижу, ничего не слышу, ничего не знаю, ничего ни кому не скажу!  :D
 
Еще вариант
Код
Sub Var2()
Dim Sh As Worksheet, Tp, i&
Tp = "=ROW(R1:R" & Worksheets.Count & ")"
Tp = Application.WorksheetFunction.Transpose(Application.Evaluate(Tp))
For Each Sh In ActiveWindow.SelectedSheets
Tp = Filter(Tp, Sh.Index, 0)
Next Sh
For i = LBound(Tp) To UBound(Tp)
Sheets(Val(Tp(i))).Visible = xlSheetHidden
Next i
End Sub
Страницы: 1
Наверх