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张的主要内容,如果未能解决你的问题,请参考以下文章