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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA自定义密码保护超过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
答案

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

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

以上是关于VBA自定义密码保护超过1张的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段1——vue主模板

VSCode 配置 用户自定义代码片段 自定义自动代码补充

VSCode自定义代码片段——CSS选择器

VBA代码实现自定义函数2

[Excel VBA]自定义排序的三种方法

VSCode自定义代码片段6——CSS选择器