AW: Passwort
16.10.2009 18:44:31
Werner
Hallo Jogy,
ich habe das Makro versucht einzubauen.....
Option Explicit
' Passwort
Const myPass = "Test"
' Anzahl der Öffnungen, ab dem ein Passwort gesetzt wird
Const anzOeff = 10
Private Sub Workbook_Open()
Dim mySh
Dim enterPass As String
' Zählt die Anzahl der Öffnungen bis 20 hoch
' damit klar ist, wann ein Passwort abgefragt werden muss
' geht 1 weiter, da Passwort erst ab 21. Öffnung notwendig
If config.Cells(2, 1) anzOeff Then
enterPass = InputBox("Passwort eingeben:", "Passwort")
End If
' Wenn weniger als 21 Oeffnung oder Passwort korrekt
' dann Sheets einblenden
If config.Cells(2, 1)
Sheets("Startcenter").ScrollArea = "A1:P48"
Sheets("Tabelle1").ScrollArea = "A1:O40"
Sheets("Tabelle2").ScrollArea = "A1:O40"
Sheets("Tabelle3").ScrollArea = "A1:O40"
Sheets("Tabelle4").ScrollArea = "A1:O40"
Sheets("Tabelle5").ScrollArea = "A1:O40"
Sheets("Tabelle6").ScrollArea = "A1:O40"
Sheets("Tabelle7").ScrollArea = "A1:O40"
Sheets("Tabelle8").ScrollArea = "A1:O40"
Sheets("Tabelle9").ScrollArea = "A1:O40"
Sheets("Tabelle10").ScrollArea = "A1:O40"
Sheets("Tabelle11").ScrollArea = "A1:O40"
Sheets("Tabelle12").ScrollArea = "A1:O40"
Sheets("Tabelle13").ScrollArea = "A1:O40"
Sheets("Tabelle14").ScrollArea = "A1:O40"
Sheets("Tabelle15").ScrollArea = "A1:O40"
Sheets("Tabelle16").ScrollArea = "A1:O40"
Sheets("Tabelle17").ScrollArea = "A1:O40"
Sheets("Tabelle18").ScrollArea = "A1:O40"
Sheets("Tabelle19").ScrollArea = "A1:O40"
Sheets("Tabelle20").ScrollArea = "A1:O40"
Sheets("Tabelle21").ScrollArea = "A1:O40"
Sheets("Tabelle22").ScrollArea = "A1:O40"
Sheets("Tabelle23").ScrollArea = "A1:O40"
Sheets("Tabelle24").ScrollArea = "A1:O40"
Sheets("Tabelle25").ScrollArea = "A1:O40"
Sheets("Stellenbelegungsplan").ScrollArea = "A1:BK39"
Sheets("Gehälter").ScrollArea = "A1:AQ36"
End Sub
'
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' If CloseMode = 0 Then Cancel = 1
'End Sub
'
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
'Sheets("Startcenter").Activate
'Application.Quit
'End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim mySh
' Speichervorgang abbrechen, wird hier gemacht
Cancel = True
' Hier wird geprüft, ob eines der Datensheets nicht "VeryHidden" ist
' Wenn doch, dann kannte der Nutzer das Passwort nicht und braucht
' auch nicht speichern
' Das ist notwenig, weil diese Prozedur am Ende alle Sheets einblendet
' Alternativ kann diese Abfrage natürlich auch vor den Einblendungen
' erfolgen
If Tabelle1.Visible = xlSheetVeryHidden Then
Call MsgBox("Speichern nicht erlaubt!", vbExclamation, "Abbruch")
Exit Sub
' Speichern unter nicht erlaubt
' Könnte man schon erlauben, nur müßte dann der Speichern-Dialog
' hier "von Hand" gemacht werden
' Habe ich jetzt mal gelassen
ElseIf SaveAsUI Then
Call MsgBox("'Speichern unter' nicht erlaubt!", vbExclamation, "Abbruch")
Exit Sub
End If
' Screenupdating aus, sonst flackert es
Application.ScreenUpdating = False
' Standard bezüglich Ein-/Ausblendungen herstellen
' Alles bis auf Startseite ausblenden
For Each mySh In ThisWorkbook.Sheets
If Not mySh.CodeName = "Startseite" Then
mySh.Visible = xlSheetVeryHidden
End If
Next
' Speichern - dabei Events aus, sonst wird Before_Save wieder ausgeführt
Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
' Und nun wieder die Arbeitseinstellung für
' Ein-/Ausblendungen
' Alles bis auf Config einblenden
For Each mySh In ThisWorkbook.Sheets
If Not mySh.CodeName = "Config" Then
mySh.Visible = xlSheetVisible
End If
Next
' Und nun das Screenupdating wieder ein
Application.ScreenUpdating = True
' Workbook auf Saved setzen, sonst fragt das beim Beenden nochmal
ThisWorkbook.Saved = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim doWhat As Integer
' Auch hier die Prüfung nach dem nicht "VeryHidden" Datensheet,
' Begründung siehe unten
' In dem Fall kein Speichern-Abfrage beim Beenden
If Tabelle1.Visible = xlSheetVeryHidden Then ThisWorkbook.Saved = True
' das Speichern von Änderungen vor dem Beenden muss hier extra gemacht werden,
' da ansonsten der Speichern Dialog vor dem Beenden immer wieder kommt,
' obwohl .saved auf True steht
' keine Ahnung warum, hatte ich aber schon öfter
If Not ThisWorkbook.Saved Then
doWhat = MsgBox("Sollen Ihre Änderungen in '" & ThisWorkbook.Name & "'gespeichert _
werden?", _
vbYesNoCancel + vbExclamation)
' entspechende Aktionen ausführen
If doWhat = vbNo Then
ThisWorkbook.Saved = True
ElseIf doWhat = vbYes Then
ThisWorkbook.Save
Else
Cancel = True
End If
End If
End Sub
....es wird aber ein kompilierungsfehler angezeigt.
Wo liegt da der Fehler denn das makro wird auch nicht ausgelöst?
Gruß Werner