Страницы: 1
RSS
Макрос для переключения между листами
 
Друзья, помогите понять такую проблему.
Я написал 2 маленьких макроса, которые переключают активные листы на предыдущую и на следующую, и положил их в проект PERSONAL.XLSB
Код
Sub SheetPrevious()
Y = ActiveSheet.Index
If Y > 1 Then ActiveSheet.Previous.Activate
End Sub

Sub SheetNext()
Z = Sheets.Count
T = ActiveSheet.Index
If T < Z Then ActiveSheet.Next.Activate
End Sub

Проблема возникает тогда, когда в книге скрытие листы. Второй макрос перепрыгивает их и выбирает следующий видимий лист на право, а вот первый не перепрыгивает на следующий левый видимий лист.
Помогите понять, почему.
Заранее спасибо.
 
Нельзя активировать скрытый лист. Перед активацией показать.
Код
Sub SheetPrevious()
Dim Y As Long
    Y = ActiveSheet.Index
    
    If Sheets.Count > Y Then ' есть следующий лист
        With Sheets(Y + 1) ' следующий справа
            .Visible = True ' показать
            .Activate ' активировать
        End With
    End If
End Sub

Для левого листа проверять не количество листов, а индекс активного листа (если не первый). И, естественно, Y - 1
 
Может ему и не надо активировать невидимый лист, а перескочить на первый видимый?
Код
Sub SheetPrevious()
    x = ActiveSheet.Index
    If x > 1 Then
        For y = x - 1 To 1 Step -1
            If Sheets(y).Visible = -1 Then
                Sheets(y).Activate
                Exit For
            End If
        Next
    End If
End Sub
Изменено: kalbasiatka - 16.08.2015 08:55:35
 
kalbasiatka, спасибо большое за универсальный код.
 
Но я так и не понял, если нельзя активировать скрытый лист, то почему второй из моих кодов не останавливается и перепрыгивает через невидимый лист на следующий видимый лист,
а вот первый не перепрыгивает через невидимый лист на предыдущий видимый лист. Попробуйте сами. В чем дело? ради интереса.
Изменено: Mayis - 16.08.2015 23:31:44
Страницы: 1
Читают тему
Наверх