2017-01-22 5 views
-1

Ich habe bereits ein Makro darunter, das ein Arbeitsblatt auf Knopfdruck ausschaltet und in Ordnung arbeitet. Ich möchte jedoch, dass dieses Makro geändert wird, so dass NUR zwei Benutzer (deren Benutzernamen "JSMITH" UND "DTAYLOR" sind) dieses Blatt mit dem Namen "Rates" anzeigen können.Ausblenden eines Arbeitsblatts basierend auf dem Benutzernamen

Wenn jemand anderes (dessen Benutzername nicht einer der beiden oben genannten ist) versucht, das Blatt einzublenden, möchte ich, dass Excel die Meldung "Sie sind nicht berechtigt, dies zu öffnen" anzeigt.

Darüber hinaus muss ich sicherstellen, dass nur diese beiden Benutzer in der Lage sind, sich ohne vba traditionell auszublenden (z. B. indem Sie mit der rechten Maustaste auf ein sichtbares Arbeitsblatt klicken und Einblenden wählen oder auf einem beliebigen Arbeitsblatt Format wählen , Blatt und dann wieder einblenden).

Können Sie bitte beraten, wie Sie den folgenden Code ändern können, um all die oben beschriebenen Dinge zu tun?

Sub Hide_AllRatesSheet() 

Worksheets("Rates").Visible = False 
ThisWorkbook.Sheets("Names").Activate 

End Sub 
+0

das Blatt versteckt ist nicht gerade sicher. Das Blatt schützen und ein Passwort eingeben? – NickSlash

+0

danke aber nein, ich muss es verstecken. Können Sie uns mitteilen, wie Sie den obigen Code ändern können? danke – Elena

+1

Beachten Sie, dass Beiträge, die (a) [Dringlichkeit] (http://meta.stackoverflow.com/q/326569/472495) und (b) freie Arbeit anfordern, in Gefahr sind, downvoted zu werden. Im Allgemeinen möchten Leser, dass Sie Ihre Fragen nicht als wichtiger als die Hunderte von anderen betrachten, die heute gekommen sind, und dass Sie bereit sind, Ihre eigenen Anstrengungen aufzuwenden, um zu einer Lösung zu kommen. – halfer

Antwort

0

Hinweis: Sie xlSheetVeryHidden Eigenschaft verwenden, könnte es zu ermöglichen, nur Einblenden von Code (und nicht von der rechten Maustaste).

versuchen, etwas wie den folgenden Code:

Sub Hide_AllRatesSheet() 

Select Case Environ$("username") '<-- check username 
    Case "JSMITH", "DTAYLOR" 
     If ActiveSheet.Name <> "Rates" Then '<-- make sure "Rates" is not the ActiveSheet 
      Worksheets("Rates").Visible = False 
     Else 
      ThisWorkbook.Sheets("Names").Activate 
      Worksheets("Rates").Visible = False 
     End If 
    Case Else 
     MsgBox "you're not authorised to open this" 
End Select 

End Sub 
+0

Entschuldigung, es war dumm von mir, aber ich gab Ihnen den falschen Code oben. Der richtige Code, den ich wie oben beschrieben modifizieren muss, ist wie folgt. Kannst du bitte helfen? kann nicht basierend auf Ihren Vorschlägen oben herausfinden. Sub GoToRates_WS() Arbeitsblätter ("Rates"). Sichtbar = True ThisWorkbook.Sheets ("Rates"). Aktivieren End Sub – Elena

+0

Ich kam mit diesem aber es funktioniert nicht: Sub GoToRates_WS() Wählen Sie Case Environ $ ("Benutzername") Case "jsmith", "Taylor" Worksheets ("Preise"). Visible = True ThisWorkbook.Sheets ("Preise"). Activate Case Else MsgBox "Sie sind nicht berechtigt, dieses zu öffnen" End Select End Sub – Elena

+0

@Elena Was wollen Sie erreichen? Was ist der Zweck Ihres Codes? –

Verwandte Themen