Microsoft Excel

Herbers Excel/VBA-Archiv

Environ - Datenblätter anzeigen/ausblenden

Betrifft: Environ - Datenblätter anzeigen/ausblenden von: Danyel
Geschrieben am: 05.09.2014 15:40:30

Hallo zusammen,

ich möchte über Envrion festlegen, dass bestimmte Nutzer nur bestimmte Datenbätter sehen können.

In einem Datenblatt (Nutzer), sollen quasi die Berechtigungen hinterlegt werden (Alles einsehen, Bereich 1 einsehen und Bereich 2 einsehen).

Ich habe bereits über gesucht, aber leider nichts gefunden.

Hoffentlich kann mir einer hier helfen.

Danke für Eure Unterstützung.

Gruß
Danyel

  

Betrifft: AW: Environ - Datenblätter anzeigen/ausblenden von: Hajo_Zi
Geschrieben am: 05.09.2014 17:01:36

warum müssen wir das nachbauen?

GrußformelHomepage


  

Betrifft: AW: Environ - Datenblätter anzeigen/ausblenden von: ChrisL
Geschrieben am: 05.09.2014 17:05:25

Hi Danyel

Ohne VBA Kenntnisse natürlich etwas schwierig, aber hier mal ein Anfang.

Der Schutz mit Excel Passwort ist nie ganz sicher.

Die berechtigten Benutzer stehen in Blatt "Benutzer" Spalte A. Ein leeres Blatt namens "Stopp" ist erforderlich.

Blatt "Benutzer" würde ich mit xlveryhidden manuell ausblenden.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim sPW As String
sPW = "Passwort"

On Error Resume Next
Application.EnableEvents = False
ThisWorkbook.Unprotect sPW
Call SheetsAusblenden
Cancel = True
If SaveAsUI Then
    Application.Dialogs(xlDialogSaveAs).Show , xlOpenXMLWorkbookMacroEnabled
Else
    ThisWorkbook.Save
End If
Call SheetsEinblenden
ThisWorkbook.Protect sPW
Application.EnableEvents = True
ThisWorkbook.Saved = True
End Sub

Private Sub Workbook_Open()
Dim sPW As String
sPW = "Passwort"

If WorksheetFunction.CountIf(Worksheets("Benutzer").Columns(1), Environ("Username")) > 0 Then
    ThisWorkbook.Unprotect sPW
    Call SheetsEinblenden
    ThisWorkbook.Protect sPW
    ThisWorkbook.Saved = True
End If
End Sub
Private Sub SheetsAusblenden()
With ThisWorkbook
    .Sheets("Stopp").Visible = True
    .Sheets("Tabelle1").Visible = xlVeryHidden
    .Sheets("Tabelle2").Visible = xlVeryHidden
    .Sheets("Tabelle3").Visible = xlVeryHidden
End With
End Sub

Private Sub SheetsEinblenden()
With ThisWorkbook
    .Sheets("Tabelle1").Visible = True
    .Sheets("Tabelle2").Visible = True
    .Sheets("Tabelle3").Visible = True
    .Sheets("Stopp").Visible = xlVeryHidden
End With
End Sub

cu
Chris