VBA多密码擅长

下午,首先,VBA noob在这里,所以对我来说很容易,请拼出答案或提供完整的代码,因为我不够熟悉,只是根据需要插入块。 我需要更多的上下文。

我想要做的是有多个正确的密码,但每个密码将做不同的事情。 就我所知,目前的运作情况如下:

Sub zebra() Dim MyPassword As String MyPassword = "Zebra" ' Change this to alter password If InputBox("Please enter password to continue.", "Enter Password") <> MyPassword Then Dim Ans As Boolean Const Pword As String = "Zebra" ' This should match password Ans = False Do While Ans = False If InputBox("Please enter password to continue.", "Enter Password") = Pword Then Ans = True End If Loop Exit Sub End If Sheets("Level 3").Visible = True ' This selects what sheet should become visible End Sub 

从本质上讲,popup窗口,inputZebra密码,如果错误循环,解锁表单“级别3,如果正确”。 我想要的是如果它可以有密码斑马解锁3级,但另一个密码,如“老虎”将解锁其他表,如“2级”。

最后,密码是什么,我需要一个特定的,基本上唯一的答案,但不确定如何编码多个密码。 请注意:我想避免编写多个代码,因为用户界面需要足够简单,以达到任何级别的熟练度,点击一个button,input密码,并接收正确的信息与所有其他隐藏的信息,因为它是高度机密。

代码示例

首先,您尝试应用“安全性”的方式并不合适,因此我build议您找另一种方法来保护您的文件。

您想要做的替代方法是使用Case语句。 一个例子:

 Select Case MyPassword Case "Zebra" Sheets("Level 3").Visible = True Case "Tiger" Sheets("Level 3").Visible = False Sheets("Level 2").Visible = True Case "Elephant" AnotherAction Case "" Msgbox "Password can not be empty." Case Else Msgbox "Wrong password." End Select 

希望能帮助到你。

这是另一个例子

 Option Base 1 Sub CheckPassword() Dim allPasswords(3) allPasswords(1) = "Zebra" allPasswords(2) = "Tiger" allPasswords(3) = "Monkey" Dim passwordEntered As String Dim iChanceCount As Integer Dim ws As Worksheet Do While True passwordEntered = InputBox("Please enter password to continue.", "Enter Password") If passwordEntered = allPasswords(1) Then Set ws = Sheets("Level 1") Else If passwordEntered = allPasswords(2) Then Set ws = Sheets("Level 2") Else If passwordEntered = allPasswords(3) Then Set ws = Sheets("Level 3") End If End If End If 'see if we set the worksheet If ws Is Nothing Then iChanceCount = iChanceCount + 1 'give them 5 tries then exit If iChanceCount >= 5 Then Exit Sub Else 'we have a worksheet so make it visible and exit ws.Visible = xlSheetVisible Exit Sub End If Loop End Sub 

这应该工作,但是,你绝对不应该使用这个敏感的数据。 如果您想要限制每个用户对不同工作表的访问权限,我build议您为每个用户单独设置一个工作簿,并为您自己创build一个从所有这些工作簿中收集数据的主文件。

 Sub testy2ElectricBoogaloo() dim i as long, ans as boolean Dim mystr As String ans = False ReDim arr(1 To Worksheets.Count, 1 To 2) For i = 1 To UBound(arr) arr(i, 1) = Worksheets(i).Name 'My code makes every password simply the sheet name followed by a smiley face. 'Adjust to fit your actual passwords. arr(i, 2) = Worksheets(i).Name & " :)" Next i Do While ans = False mystr = InputBox("Please enter password to continue.", "Enter Password") If mystr = vbNullString Then Exit Sub For i = 1 To ThisWorkbook.Worksheets.Count If mystr = arr(i, 2) Then ans = True: Worksheets(arr(i, 1)).Visible = True: Exit For Next i Loop End Sub