2017-11-13 3 views
0

Nachmittag, zuerst aus, VBA noob hier so nehmen Sie es mir leicht und bitte Antworten buchstabieren oder vollständigen Code zur Verfügung stellen, da ich nicht vertraut genug bin, um nur Stücke nach Bedarf einzufügen. Ich brauche ein wenig mehr Kontext.VBA mehrere Passwörter Excel

Was ich versuche zu tun, ist mehrere richtige Passwörter zu haben, aber jedes Passwort wird etwas anderes tun. Dies ist so weit, wie ich bekam und seine aktuelle Operation ist wie folgt:

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 

Wesentlichen Pop-up-Fenster, geben Sie Zebra-Passwort, Schleife, wenn falsch, entsperren Blatt „Ebene 3, wenn richtig“. Was ich möchte ist, wenn es das Passwort Zebra entsperren Level 3 hätte aber ein anderes Passwort wie "Tiger" würde ein anderes Blatt wie "Level 2" entsperren.

Am Ende, was auch immer das Passwort ist, brauche ich eine spezifische und im Grunde eindeutige Antwort, aber bin mir nicht sicher, wie man mehrere Passwörter codiert. BITTE BEACHTEN SIE: Ich möchte vermeiden, mehrere Codes zu schreiben, weil die Benutzeroberfläche einfach genug sein muss, um auf eine Schaltfläche klicken, ein Kennwort eingeben und die richtigen Informationen mit ALLEN anderen Informationen erhalten, wie es ist höchst Vertraulich.

Code example

+4

Excel Sicherheit ist nicht der Weg zu gehen, wenn Sie * streng vertraulich * Daten besorgt sind. Jeder kann Passwörter relativ leicht knacken. –

Antwort

4

Zunächst einmal alle, wie Sie versuchen, „Sicherheit“ anzuwenden ist nicht die richtige, so schlage ich vor, eine andere Alternativen zu finden, die Dateien zu sichern.

Eine Alternative zu dem, was Sie versuchen zu tun, ist Case Anweisung zu verwenden. Ein Beispiel:

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 

Hoffe, es hilft.

+0

Das sieht aus, als was ich brauche. Ich habe noch nie von "Case" gehört und werde es versuchen. (Ein Autodidakt Noob). Vielen Dank! – jallington

0

Dies sollte funktionieren, aber Sie sollten dies nicht für sensible Daten verwenden. Wenn Sie den Zugriff auf verschiedene Blätter für jeden Benutzer einschränken möchten, empfehle ich, für jeden Benutzer eine separate Arbeitsmappe zu erstellen und sich eine Masterdatei zu besorgen, die Daten aus allen diesen Arbeitsmappen sammelt.

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 
2

Hier ist ein weiteres Beispiel

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