Hallo
Habe eine Mappe mit der Tabelle stunden.
Da drin sind formeln die ich bei weiter gabe der mappe schützen möchte.
Hier ein Screenshoot:
http://www.yourupload.de/show/d/1369/dIh8M2Y9.jpg
Es stehen nur die Weißen Zellen zur bearbeitung frei. Die Grauen nicht.
Wenn die Mappe geladen wird ist die Mappe geschüzt. wenn in C1 das Monat oder in D1 das Jahr geändert wird. ist nach dem Zeilen ein/ausblenden nach dem Monatsletzten Tag die Tabelle nicht mehr geschützt!
Der folgende code ensperrt die Tabelle und Belendet die Zeilen aus und ein ab den Monatsletzten Tag wie es sein sollte.
Der code sollte dann wieder die Tabelle sperren, was leider nicht geschieht.
Hier ist der Code
Private Sub Worksheet\_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range(C1)) Is Nothing Or \_
Not Application.Intersect(Target, Range(D1)) Is Nothing Then
Application.ScreenUpdating = False
'Spalte der Wochentage Spalte B
'=Stunden!$B:blush:B
MakroSpalteWochenTag = ThisWorkbook.Names("MakroSpalteWochenTag").RefersTo
MakroSpalteWochenTag = Mid(MakroSpalteWochenTag, (InStrRev(MakroSpalteWochenTag, "$") + 1))
'Spalte der geleisteten Dienste Spalte G
'=Stunden!$G:blush:G
MakroSpalteDienst1 = ThisWorkbook.Names("MakroSpalteDienst1").RefersTo
MakroSpalteDienst1 = Mid(MakroSpalteDienst1, (InStrRev(MakroSpalteDienst1, "$") + 1))
'Spalte der geleisteten Überstunden Spalte J
'=Stunden!$J:blush:J
MakroSpalteÜberzeit2 = ThisWorkbook.Names("MakroSpalteÜberzeit2").RefersTo
MakroSpalteÜberzeit2 = Mid(MakroSpalteÜberzeit2, (InStrRev(MakroSpalteÜberzeit2, "$") + 1))
'gibt das Passwort für Bearbeitung ein
ThisWorkbook.Worksheets("Stunden").Unprotect Password:="fred121"
ThisWorkbook.Worksheets("Druck Version").Unprotect Password:="fred121"
'Sucht in Zeilen B30 bis B33 nach wochentag
For a = 30 To 33
If Range(MakroSpalteWochenTag & a).Value = "Montag" Or \_
Range(MakroSpalteWochenTag & a).Value = "Dienstag" Or \_
Range(MakroSpalteWochenTag & a).Value = "Mittwoch" Or \_
Range(MakroSpalteWochenTag & a).Value = "Donnerstag" Or \_
Range(MakroSpalteWochenTag & a).Value = "Freitag" Or \_
Range(MakroSpalteWochenTag & a).Value = "Samstag" Or \_
Range(MakroSpalteWochenTag & a).Value = "Sonntag" Then
'wenn ein wochentag in B30 bis B33 und die Zeile ist ausgeblendet,
'blendet die Zeile ein
If Rows(a).Hidden = True Then
ThisWorkbook.Worksheets("Stunden").Rows(a).EntireRow.Hidden = False
'blendet die zeilen in der Tabelle "Druck Version" ein
LastCell = a
LastCell = LastCell + 9
ThisWorkbook.Worksheets("Druck Version").Rows(LastCell).EntireRow.Hidden = False
End If
Else
'wenn kein wochentag in B30 bis B33 und die Zeile ist eingeblendet,
'blendet die Zeile aus
'löscht den inhalt der Zeile von Spalte G bis Spalte J
If Rows(a).Hidden = False Then
ThisWorkbook.Worksheets("Stunden").Rows(a).EntireRow.Hidden = True
ThisWorkbook.Worksheets("Stunden").Range(MakroSpalteDienst1 & a, \_
MakroSpalteÜberzeit2 & a).ClearContents
'blendet die zeilen in der Tabelle "Druck Version" aus
LastCell = a
LastCell = LastCell + 9
'Tabelle = "Druck Version"
ThisWorkbook.Worksheets("Druck Version").Rows(LastCell).EntireRow.Hidden = True
'wenn kein wochentag in B30 bis B33 und die Zeile ist ausgeblendet,
'blendet die Zeile ein
ElseIf Rows(a).Hidden = True Then
ThisWorkbook.Worksheets("Stunden").Rows(a).EntireRow.Hidden = False
'blendet die zeilen in der Tabelle "Druck Version" ein
LastCell = a
LastCell = LastCell + 9
ThisWorkbook.Worksheets("Druck Version").Rows(LastCell).EntireRow.Hidden = False
End If
End If
Next a
'Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
'setz wieder das Passwort für die Tabelle
ThisWorkbook.Worksheets("Stunden").Protect Password:="fred121", DrawingObjects:=True, Contents:=True, Scenarios:=True
ThisWorkbook.Worksheets("Druck Version").Protect Password:="fred121"
End If
End Sub
Danke Fred