Excel VBA «Блокировать, если без конца, если» Ошибка - PullRequest
0 голосов
/ 19 марта 2019

Не могу понять, почему мой скрипт не работает. Я понимаю, что это потому, что я неправильно использую оператор IF, но не вижу, где находится ошибка.

Любая помощь очень ценится! Спасибо!

Dim sheetsArray As Sheets
    Set sheetsArray = ThisWorkbook.Sheets(Array("Project", "Project 2", "Project 3", "Project 4"))


    Application.ScreenUpdating = False
    If ShowHide1.Name = "Show All Projects" Then

        For Each sheet In sheetsArray
            sheet.Visible = xlSheetVisible
        Next sheet

        ShowHide1.Name = "Hide All Projects"

        Sheet1.Activate
    Else

        For Each sheet In sheetsArray
            If (sheet.Name <> ShowHide1.Name And sheet.Name <> AlwaysShow.Name) Then
               sheet.Visible = xlSheetVeryHidden
            End If
        Next sheet

        ShowHide1.Name = "Show All Projects"


    Set sheetsArray = ThisWorkbook.Sheets(Array("Jagger1", "Jagger2", "Jagger3", "Jagger4"))


    Application.ScreenUpdating = False
    If ShowHide1.Name = "Show All Jagger" Then

        For Each sheet In sheetsArray
            sheet.Visible = xlSheetVisible
        Next sheet

        ShowHide1.Name = "Hide Jagger"

        Sheet1.Activate
    Else

        For Each sheet In sheetsArray
            If (sheet.Name <> ShowHide1.Name And sheet.Name <> AlwaysShow.Name) Then
               sheet.Visible = xlSheetVeryHidden
            End If
        Next sheet

        ShowHide1.Name = "Show all Jagger"


        AlwaysShow.Activate
    End If
    Application.ScreenUpdating = True
End Sub

1 Ответ

0 голосов
/ 19 марта 2019

Попробуйте:

Option Explicit

Sub test()

    Dim sheetsArray As Sheets

    Set sheetsArray = ThisWorkbook.Sheets(Array("Project", "Project 2", "Project 3", "Project 4"))

    Application.ScreenUpdating = False

        If ShowHide1.Name = "Show All Projects" Then

            For Each Sheet In sheetsArray
                Sheet.Visible = xlSheetVisible
            Next Sheet

            ShowHide1.Name = "Hide All Projects"

            Sheet1.Activate
        Else

            For Each Sheet In sheetsArray
                If (Sheet.Name <> ShowHide1.Name And Sheet.Name <> AlwaysShow.Name) Then
                   Sheet.Visible = xlSheetVeryHidden
                End If
            Next Sheet

            ShowHide1.Name = "Show All Projects"

        End If

        Set sheetsArray = ThisWorkbook.Sheets(Array("Jagger1", "Jagger2", "Jagger3", "Jagger4"))

        If ShowHide1.Name = "Show All Jagger" Then

            For Each Sheet In sheetsArray
                Sheet.Visible = xlSheetVisible
            Next Sheet

            ShowHide1.Name = "Hide Jagger"

            Sheet1.Activate
        Else

            For Each Sheet In sheetsArray
                If (Sheet.Name <> ShowHide1.Name And Sheet.Name <> AlwaysShow.Name) Then
                   Sheet.Visible = xlSheetVeryHidden
                End If
            Next Sheet

            ShowHide1.Name = "Show all Jagger"

            AlwaysShow.Activate

        End If

    Application.ScreenUpdating = True

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...