Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA多密码excel_Vba_Excel - Fatal编程技术网

VBA多密码excel

VBA多密码excel,vba,excel,Vba,Excel,下午,首先,这里是VBA noob,所以请对我放松,请拼出答案或提供完整的代码,因为我不太熟悉,无法根据需要插入块。我需要多一点背景知识 我想做的是,有多个正确的密码,但每个密码会做一些不同的事情。据我所知,其当前操作如下: Sub zebra() Dim MyPassword As String MyPassword = "Zebra" ' Change this to alter password If InputBox("Please enter password

下午,首先,这里是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
Sub斑马()
将MyPassword设置为字符串
MyPassword=“Zebra”'将此更改为更改密码
如果输入框(“请输入密码继续。”,“输入密码”)为我的密码,则
Dim Ans作为布尔值
Const Pword As String=“Zebra”'这应该与密码匹配
Ans=错误
当Ans=False时执行
如果InputBox(“请输入密码以继续。”,“输入密码”)=Pword,则
Ans=真
如果结束
环
出口接头
如果结束
工作表(“级别3”)。Visible=True“此选项选择应显示的工作表
端接头
基本上,弹出窗口,输入斑马密码,如果错误则循环,如果正确则解锁工作表“3级”。我想要的是,如果它可以有密码斑马解锁级别3,但另一个密码,如“老虎”将解锁另一个表,如“级别2”

最后,不管密码是什么,我需要一个具体的,基本上唯一的答案,但我不确定如何编码多个密码。 请注意:我希望避免编写多个代码,因为用户界面需要足够简单,任何熟练程度的人都可以单击按钮、输入密码并接收正确的信息,而所有其他信息都会隐藏起来,因为这些信息是高度机密的。


首先,您尝试应用“安全性”的方式并不合适,因此我建议您寻找其他方法来保护您的文件

您尝试执行的另一种操作是使用
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

希望能有所帮助。

首先,您尝试应用“安全性”的方式并不合适,因此我建议找到其他方法来保护您的文件

您尝试执行的另一种操作是使用
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

希望能有所帮助。

这应该可以,但是,您绝对不应该将其用于敏感数据。如果您想限制每个用户对不同工作表的访问,我建议您只需为每个用户创建一个单独的工作簿,并为自己创建一个主文件,从所有这些工作簿中收集数据

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

这应该是可行的,但是,您绝对不应该将其用于敏感数据。如果您想限制每个用户对不同工作表的访问,我建议您只需为每个用户创建一个单独的工作簿,并为自己创建一个主文件,从所有这些工作簿中收集数据

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

这是另一个例子

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

这是另一个例子

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

如果您担心高度机密的数据,那么Excel安全性就不是一个好办法。任何人都可以相对轻松地破解excel密码。如果您担心高度机密的数据,excel安全性是不可取的。任何人都可以相对轻松地破解excel密码。这看起来正是我需要的。我从来没听说过“凯斯”,我会试一试的。(自学成才的noob)。非常感谢。这看起来是我需要的。我从来没听说过“凯斯”,我会试一试的。(自学成才的noob)。非常感谢。