• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Beveiliging excel met twee niveaus? 2

Status
Niet open voor verdere reacties.

Ericssport

Gebruiker
Lid geworden
7 jan 2009
Berichten
90
http://www.helpmij.nl/forum/showthread.php?t=364489

Op het bovenstaande forum kwam ik iets heelbruikbaars tegen, ik vroeg me alleen af, is het mogelijk om de aze-rechten ipv sheet 1,2,3 te laten zien ook alles behalve 1,2 te laten zien?! Hieronder het geheel voor de duidelijkheid.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
Worksheets("Hoofdblad").Activate
NietZichtbaar
Me.Save
Application.DisplayAlerts = True
End Sub

Private Sub Workbook_Open()
Application.ScreenUpdating = False

Dim Sh As Worksheet
Dim Antwrd As String

On Error Resume Next

For Each Sh In Sheets
Sh.Visible = False
Next

Antwrd = LCase(InputBox("Geef wachtwoord", "Controle"))
Select Case Antwrd

Case "admin"
For Each Sh In Sheets
Sh.Visible = True
Next

Case "aze"
Sheets(1).Visible = True
Sheets(2).Visible = True
Sheets(3).Visible = True
Sheets(Hoofdblad).Visible = True


Case Else
ThisWorkbook.Close SaveChanges:=False
End Select
End Sub
 
Laatst bewerkt:
Code:
Probeer deze eens

Code:
Case "aze"
    For Each Sh In Sheets
          Sh.Visible = True
    Next
    Sheets(1).Visible = False
    Sheets(2).Visible = False

lijkt me ook wat netter om voor het sluiten van je blad nog een melding te geven dat het wachtoord fout is en het blad wordt gesloten.
Code:
        Case Else
            MsgBox "U heeft geen juist wachtwoord ingevoerd. Document wordt gesloten!"
            ThisWorkbook.Close SaveChanges:=False
        End Select
 
Laatst bewerkt:
[Bedankt voor je snelle reactie, werkt prima, maar voldoet op de langere terijn misschien niet helemaal meer, ik vroeg me alleen af bestaat er ook zoiets als ..

bijv:
For Each Sh In Sheets
Sh.Visible = True BEHALVE SHEET 1,2, 5, 6


=Demeter;2593355]lijkt me ook wat netter om voor het sluiten van je blad nog een melding te geven dat het wachtoord fout is en het blad wordt gesloten.
Code:
        Case Else
            MsgBox "U heeft geen juist wachtwoord ingevoerd. Document wordt gesloten!"
            ThisWorkbook.Close SaveChanges:=False
        End Select

Is inderdaad netter, en ga ik toevoegen.
 
De bedoeling is dat straks er een aantal sheet afgeschermd wordt, en een variërend aantal sheet wel zichtbaar is.

Opzich kan ik handmatig bij elke mutatie een aantal nieuwe regels toevoegen of afhalen maar dat zal waarschijnlijk op den duur erg arbeidsintensief worden, dus ik vroeg mij af of er een manier was die een vast aantal sheet afschermt en de rest wel zichtbaar houdt/maakt?!

In lekentaal (mijn taal dus;) ); bijv. sheet 1,2,4,6 afschermen en alle anderen (variërend aantal) zichtbaar maken/houden.

Sorry voor de omslachtige omschrijving.
 
Je kunt met select Case werken

Code:
Dim sh As Worksheet
    For Each sh In Worksheets
        Select Case sh.Index
            Case 1, 2, 5, 6
                sh.Visible = xlSheetHidden
            Case Else
                sh.Visible = xlSheetVisible
            End Select
    Next
Alle werkbladen behalve 1, 2, 5 en 6 worden getoond.

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt:
Ron, das nog eens iets.
Zo heb ik er nog geheel niet naar gekeken :o
:thumb:
 
Code:
Dim sh As Worksheet
    For Each sh In Worksheets
        Select Case sh.Index
            Case 1, 2, 5, 6
                sh.Visible = xlSheetHidden
            Case Else
                sh.Visible = xlSheetVisible
            End Select
    Next

Ik heb mijn best gedaan, maar met mijn beperkte kennis van dit alles lukt het me niet om dit stukje code al werkend in het geheel te krijgen, kan iemand deze nitwit hiermee helpen?!
 
Laatst bewerkt:
Code:
Private Sub Workbook_Open()
  c0="1234"
  If LCase(InputBox("Geef wachtwoord", "Controle"))="admin" then c0="12345678"
  For Each Sh In Sheets
    Sh.Visible = instr(c0,sh.index)>0
  Next
End Sub
De administrator krijgt 8 werkbladen te zien, overigen werkblad 1 t/m 4
 
Laatst bewerkt:
Code:
Private Sub Workbook_Open()
  c0="1234"
  If LCase(InputBox("Geef wachtwoord", "Controle"))="admin" then c0="[COLOR="Red"]12345678[/COLOR]"
  For Each Sh In Sheets
    Sh.Visible = instr(c0,sh.index)>0
  Next
End Sub

Dit is een mooi stukje code maar ook hier loop ik tegen het probleem aan dat het zich beperkt tot een aantal sheet, ik was eigenlijk op zoek naar een code die ongeacht het aantal sheet een bepaalde sheets kan afschermen. Hetgeen ik hierboven rood gemarkeerd heb is de beperking in deze code.

_____

Code:
Dim sh As Worksheet
    For Each sh In Worksheets
        Select Case sh.Index
            Case 1, 2, 5, 6
                sh.Visible = xlSheetHidden
            Case Else
                sh.Visible = xlSheetVisible
            End Select
    Next

De code hierboven heb ik geprobeerd in het in het geheel (zie eerste post) de onder 'aze' te intregeren, maar dat is me helaas niet gelukt, misschien kan iemand me hier mee helpen?! :)
 
Laatst bewerkt:
Code:
Dim sh As Worksheet

    PassW = LCase(InputBox("Geef wachtwoord", "Controle"))
    
    If PassW <> "admin" Then
        For Each sh In Worksheets
            Select Case sh.Index
                Case 1, 2, 5, 6
                    sh.Visible = xlSheetHidden
                Case Else
                    sh.Visible = xlSheetVisible
            End Select
        Next
    End If

Met vriendelijke groet,


Roncancio
 
denk dat er al genoeg voorbeelden zijn gegeven voor de werkende code nu is het meer aan jou om te spelen met de mogelijkheden ervan (als deze duidelijk voor je zijn).

Beschrijf nog een keer wat je precies wilt doen, stapsgwijs.

Wie kunnen er inloggen;
wat mag deze zien als er is ingelogd.

Edit:
vergeet deze post maar als je van Ron het juiste antwoord heb gekregen.
 
Laatst bewerkt:
Na een beetje spelen is het gelukt, dank voor jullie hulp!! :)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan