Ich habe jede Menge Sheets in meinem Workbook. Und möchte jetzt das alle Formeln geschützt werden, so das Sie niemand verändert, oder versehentlich in den Zellen irgend was eingiebt.
Hat jemand eine Idee was ich da machen kann.
Karl
Sub formschutz()
On Error GoTo fehlerbeh
Dim wks As Worksheet
Application.ScreenUpdating = False
For Each wks In ThisWorkbook.Worksheets
ActiveSheet.Protect DrawingObjects:=False, Contents:=False, Scenarios:=False
With Cells
.Locked = False
.FormulaHidden = False
End With
With Cells.SpecialCells(xlFormulas, 23)
.Locked = True
'.FormulaHidden = True
End With
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Next wks
Exit Sub
fehlerbeh:
If Err.Number 0 Then
MsgBox Err.Description
End If
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel _
As Boolean)
Call KeinFormelSelektieren(Target)
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Call KeinFormelSelektieren(Target)
End Sub
Private Sub KeinFormelSelektieren(Bereich As Range)
Dim Zelle As Range
Set Bereich = Intersect(Bereich, Bereich.Parent.UsedRange)
If Not Bereich Is Nothing Then
For Each Zelle In Bereich
If Zelle.HasFormula Then
Bereich(1).Offset(1, 0).Select
Exit For
End If
Next
End If
End Sub
selektiert der Anwender eine Zelle mit Formel oder einen Bereich, der ein einer beliebigen Stelle eine Formel enthält, so wird die Selektion aufgehoben und nächste, darunterliegende Zelle ohne Formel selektiert.
dieser Code gilt für alle Sheets und alle Zellen der Datei.
allerdings ist diese Schutzfunktion sehr leicht auszuhebeln (durch wechseln in den Entwurfsmodus), dh. er schützt nur vor Bedienfehlern und nicht vor absichtlichen veränderungen.
Gruß, Daniel