[英]VBA Multiple Passwords excel
下午,首先,这里是VBA菜鸟,请放心,请拼出答案或提供完整的代码,因为我不熟悉,只能根据需要插入块。 我需要更多背景信息。
我想做的是拥有多个正确的密码,但是每个密码都会做不同的事情。 据我所知,它的当前操作如下:
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
本质上,在弹出窗口中,输入Zebra密码,如果输入错误,则循环,解锁工作表“如果正确,则为3级”。 我想要的是如果它可以拥有密码Zebra解锁级别3,但是另一个密码(例如“老虎”)可以解锁另一个表(例如“ Level 2”)。
最后,无论密码是什么,我都需要一个特定且基本唯一的答案,但不确定如何编写多个密码。 请注意:我想避免编写多个代码,因为用户界面必须足够简单,以便任何水平的用户都可以单击按钮,输入密码并接收正确的信息,而所有其他信息都被隐藏,因为这是高度机密的。
首先,您尝试应用“安全性”的方法不合适,因此,我建议找到另一种替代方法来保护文件。
您尝试做的另一种选择是使用Case
Statement。 一个例子:
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
这应该起作用,但是,您绝对不应将其用于敏感数据。 如果要限制每个用户对不同工作表的访问,建议只为每个用户准备一个单独的工作簿,并为自己准备一个从所有这些工作簿收集数据的主文件。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.