VBA自定义密码保护超过1张

问题描述 投票:0回答:1

我目前正在开发一个支持宏的Excel工作表,有多个选项卡(有9个选项卡我想要这样做,但出于问题的目的,我只包括2个),并且我希望每个选项卡添加与我在代码中指定的内容相匹配的密码提示。

这工作正常,但我的问题是,当两张表在实际工作表选项卡上彼此相邻时,它将通过它们而不是隐藏第一张,直到我输入正确的密码。

例如,在我的工作表上,我有一个名为Cascada的选项卡,后面是一个名为Cascada2的选项卡。如果我在这两个之间放置一个空白选项卡,那么我的代码将正常工作。但是,当它们按顺序排列时,无论是否输入正确的字符串,它似乎都会经历密码提示序列。

请参阅下面的代码,任何建议将不胜感激。

谢谢。

编辑更新与答案

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

Application.EnableEvents = False

Dim cascada As String, cascada2 As String
cascada = "Config_Cascada"
Rhea = "Config_Rhea"

Select Case Sh.Name
    Case cascada, cascada2

        Dim pwd As String
        pwd = "cascada" & IIf(Sh.Name = cascada2, 2, "")

        Dim Response As String
        Response = InputBox("Enter password to view sheet")

        If Response = pwd Then
            Sh.Select
        Else
        Worksheets("Doors").Activate
        End If


End Select

Select Case Sh.Name
    Case Rhea

        Dim pwdRhea As String
        pwdRhea = "rhea"

        Dim ResponseRhea As String
        ResponseRhea = InputBox("Enter password to view sheet")

        If Response = pwdRhea Then
            Sh.Select
        Else
        Worksheets("Doors").Activate
        End If


End Select

Application.EnableEvents = True

End Sub
excel vba excel-vba
1个回答
2
投票

试一试。清洁和工作到我测试:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

    Application.EnableEvents = False

    Dim cascada As String, cascada2 As String
    cascada = "config_Cascada"
    cascada2 = "config_Cascada2"

    Select Case Sh.Name
        Case cascada, cascada2

            Dim pwd As String
            pwd = "cascada" & IIf(Sh.Name = cascada2, 2, "")

            Dim Response as String
            Response = InputBox("Enter password to view sheet")

            If Response = pwd Then
                Sh.Select
            End If

    End Select

    Application.EnableEvents = True

 End Sub
© www.soinside.com 2019 - 2024. All rights reserved.