Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Excel - Blattschutz info





Frage

Hallo, ich habe eine Arbeitsblatt wo schon in einige Bereichen geschütz sind und durch den Blattschutz geschützt habe. Nun meine Frage die Bereiche die nicht geschützt sind sollen nach der eingabe der Daten durch ein Button geschützt werden. Um somit einer nachträglichen Manipulation der Daten zu verhinden. Vielen Dank im Voraus für die Hilfe. MFG SK-2

Antwort 1 von CaroS

Hallo SK-2,

öffne die Steuerelement-Toolbox-Symbolleiste (nicht die Formular-Symbolleiste), klicke auf das Befehlsschaltfläche-Symbol (3. Position) und erstelle dann auf Deinem Tabel-lenblatt eine ausreichend große Schaltfläche, so dass alle Zellen, die Du schützen willst, gut abgedeckt sind.

Über Rechtsklick -- Steuerelement formatieren... -- Eigenschaften kannst Du ´Objekt drucken´ deaktivieren, so dass die Schaltfläche nicht mit ausgedruckt wird. Sonst würdest Du ja die Schaltfläche anstatt Deine Daten drucken und hättest gar nichts davon.

Um größere und nicht zusammenhängende Zellbereiche zu schützen, musst Du wahrscheinlich mehrere Schaltflächen verwenden. Dann brauchst Du nur noch den Arbeitsmappenschutz aktivieren, und (fast) keiner kann die Daten nachträglichen manipulieren. (Leider kann auch der Arbeitsmappenschutz "geknackt" werden.)

Gruß,
CaroS

Antwort 2 von coros

Moin Ihr zwei,

ich habe da eine etwas andere Lösung als Caro. Kopiere nachfolgendes Makro in ein StandardModul und starte es über eine Befehlsschaltfläche.

Option Explicit

Sub Zellenschutz()
If ActiveCell.Locked = False And ActiveCell <> "" Then
ActiveSheet.Unprotect "Hier_Dein_Blattschutzpasswort_eintragen"
ActiveCell.Locked = True
ActiveSheet.Protect "Hier_Dein_Blattschutzpasswort_eintragen"
End If
ActiveCell.Activate
End Sub


Hier wird beim Ausführen des Makros geprüft, ob in der aktiven Zelle etwas steht und die Zelle auch noch nicht geschützt ist. Ist das der Fall, wird die Zelle geschützt. Ansonsten wird die Zelle nicht geschützt.

Man könnte das ganze auch so automatisieren, dass nach jeder Eingabe diese Prüfung erfolgt und wenn in die Zelle etwas eingetragen wurde, diese dann geschützt wird. Dann sieht der Code folgendermaßen aus. Kopiere den nachfolgenden Code in das VBA-Projekt, des Tabellenblattes, in dem Du die Zellen nach der Eingabe schützen möchtest.

 Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Locked = False And Target.Cells <> "" Then
ActiveSheet.Unprotect "Hier_Dein_Blattschutzpasswort_eintragen"
Target.Cells.Locked = True
ActiveSheet.Protect "Hier_Dein_Blattschutzpasswort_eintragen"
End If
End Sub 


Beide Code musst Du noch ein wenig anpassen. Du musst überall dort, wo der Text "Hier_Dein_Blattschutzpasswort_eintragen" steht, Dein Blattschutzpasswort zwischen die beiden A
Anführungsstriche ("") eintragen.

Ich hoffe, Du kannst mit einem der beiden Code etwas anfangen. Bei Fragen melde Dich bitte.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 & 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 3 von SK-2

Hallo,
vielen Dank erstmal für die Antworten.
Aber die Antworten lösen mein Problem noch nicht
ganz . Ich habe mir mal den Code von Coros genommen und mit Visual Basic hilfe versucht zu vervollständeigen aber mein Quellcode funtz einfach nicht



Private Sub CommandButton1_Click()

ActiveSheet.Unprotect "pass"

´Blattschutz deaktivieren

ActiveSheet.Range("D12:R19").Locked = True

´Einen Bereich auswählen und als Gesperrt einstellen

ActiveSheet.Protect "pass"

´Blattschutz aktivieren wo der neu bereich mit geschütz wird

End Sub



vielleicht kann mann jetzt erkennen was ich eigentlich versuchen will

MFG SK-2

Antwort 4 von coros

Hi SK-2,

und was funktioniert daran nicht? Du müsstest schon schreiben, was nicht funktioniert. Denn wenn ich den Code ansehe, sollte er funktionieren.

Also, was macht er nicht, was er machen soll. Oder sollen wir das jetzt aus der großen Glaskugel auslesen. ;-)

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 5 von SK-2

Hallo,

Was ich programmiert habe funzt deshlab nett weil ich
nach dem Click auf den Button, in die zellen immer noch etwas ändern kann oder in lerren zellen noch was reinschreiben kann . Und das sollt ja nicht mehr der fall sein.
Ich möcht ganz einfach das nach dem Click des Button die Zellen als Gespert markiert werden

(was ich nicht selbst mach will in dem ich ,die Zellen markier -> zellen formatieren ->Reiter Schutz wähle und das häckchen in Gespert setzt)
das soll ja der Button übernehmen
+ dannach den Blattschutz aktivieren und mit Passwort
versehen

MFG SK-2

Antwort 6 von coros

Hi Sk-2,

das macht eigentlich der Code, den Du gepostet hast. Zumindest bei mir. Wenn ich den Button betätige, wird der Bereich D12:R19 für weitere Eingaben gesperrt.

Welche Excelversion verwendest Du? Wenn Du den Code ausgeführt hast, dann mal den Blattschutz per Hand aufhebst und in eine der Zellen des Bereiches, der geschützt werden soll, in der Zellformatierung in der Regsisterkarte Schutz schaust, steht dann dort ein Haken vor "Gesperrt"?

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 7 von SK-2

Hallo,

von Versin Excel 2000 - 2003 wird arbeitsblatt genutzt.
nach dem click auf dem Button wird das arbeitsblatt wieder geschützt nur in den

- Bereichen kann ich noch schreiben
- Zell formatierung sind deaktiviert

nach dem manuellen deaktiveren des Blattschutzes sind die Bereich nicht als Gesperrt markiert

ich selbst benutze Excel 2003 Sp1

MFG SK-2

Antwort 8 von coros

Hi SK-2

die Makros sind aktiviert (Wird beim Starten der Datei abgefragt)?

Die Sicherheitseinstellung, zu finden unter "Extras => Makro => Sicherheit..." in der Registerkarte "Sicherheitsstufe" steht auf Mittel?


MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 9 von SK-2

Hallo,
danke danke jetzt funktioniert es wie ich es haben will.

habe jetzt nur noch ein kleines schönheitsproblem

die meldung die am Anfang kommt ob die Makros aktiviert will oder deaktiveren wie kann mann das noch ausschalten so das die Makros immer aktiviert sind


Danke noch mals für die gut lösung

MFG SK-2

Antwort 10 von coros

Hi SK-2,

das kann man über 2 Wege realisieren. Entweder mit einer digitalen Signatur. Wenn diese verwendet wird, muss beim ersten Öffnen der Datei nur aktiviert werden, dass Makros aus dieser Quelle immer vertraut werden kann und somit erscheint keine Abfrage mehr.
Eine Anleitung, wie Du eine solche Signatur erstellst, findest Du auf meiner HP in der Rubrik Anleitungen .

Die 2. Variante ist, eine Exe-Datei zu erzeugen, die dass dann automatisch erledigt.

Aber Variante 1 sollte genügen.

Bei Fragen melde Dich bitte.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 11 von SK-2

Hallo,
mit der digitalen Signatur hatt es wunderbar geklappt ,
nur leider wurde meine vorschlag mit dem Blattschutz wieder geändert. Jetzt soll es aus einer Excel Tabelle heraus auf die andere Exceldatei zugegriffen werden und den Blattschutz zu aktivieren+ die einzelnen Bereiche Gespertt markieren. nur irgendwie funzt das nett



Workbooks("P:\Stundenberechnung\Aushilfen\Eck_P.xls").Worksheets("August").Unprotect "pass"
Workbooks("P:\Stundenberechnung\Aushilfen\Eck_P.xls").Worksheets("August").Range("D12:R19").Locked = True
Workbooks("P:\Stundenberechnung\Aushilfen\Eck_P.xls").Worksheets("August").Range("V12:AK19").Locked = True
Workbooks("P:\Stundenberechnung\Aushilfen\Eck_P.xls").Worksheets("August").Protect "pass", Scenarios:=True, UserInterfaceOnly:=True



mir wird immer der Fehler 9 zurück gegeben

MFG SK-2

Antwort 12 von coros

Nabend SK-2,

es wäre schön gewesen, wenn Du geschrieben hättest, ob die Datei bereits geöffnet ist oder erst noch geöffnet werden muss. Ich bin mal vom einfachen ausgegangen und habe einen Code erarbeitet, der als Bedingung voraussetzt, dass die Datei "Eck_P.xls" bereits geöffnet ist. Die nachfolgenden Zeilen setzt den Zellenschutz in Datei "Eck_P.xls" in Blatte "August" im Bereich D12:D19 und V12:AK19. Füge den Code in ein StandardModul ein.

Option Explicit

Sub Zellschutz()
With Workbooks("Eck_P.xls").Sheets("August")
.Unprotect "pass"
.Range("D12:R19").Locked = True
.Range("V12:AK19").Locked = True
.Protect "pass"
End With
End Sub


Ich hoffe, Du kommst klar. Bei Problemen melde Dich bitte.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 13 von SK-2

Hallo,
danke erstmal für die Antwort ,ich muss das Problem jetzt noch mal näher erläutern . Die Sekräterin soll in einer Zusammenfassung von der Stundenabrechnung aller Angestellten die einzelnen Excel-tabellen sichern um somit einen betrug aus zuschließen. Ich habe mir das so vorgestellt das das in der Zusammenfassung vor jeder zusammenfassung eines Angestellten ein button ist der die einzelne Exceldatei des Angestellten sperrt um somit einen Betrug auszuschließen . Bekommt man das so hin das mann das es gesperrt wird wenn die datei geöffnet oder nicht geöffnet ist z.B (durch eine Selektion "if" ) Kenn mich leider nur in C++ aus.

MFG SK-2

Antwort 14 von CaroS

Hallo SK-2,

mal unabhängig von Deinen/Euren Kunststücken mit dem Blattschutz, habt Ihr insgesamt ein Konzept oder eine Vorstellung, wie Ihr mit Euren Daten umgehen wollt? Habt Ihr Euch überhaupt schon mal (gemeinsam?) Gedanken gemacht oder darf da jeder mit daran rumprobieren und es dann wieder in die Tonne tun?

Ich weiß zwar nicht, ob jeder Mitarbeiter seine eigene Datei führt und sie erst am Monatsende abgibt oder ob jeder Mitarbeiter sein persönliches Tabellenblatt (täglich oder am Monatsende?) in einer einzigen (zentralen) Datei ausfüllt, aber das spielt eigentlich auch gar keine Rolle.

Wenn ein Mitarbeiter per Excel-Tabelle etwas abzurechnen hat, dann muss er das irgendwann mal selbst eingeben oder eingeben lassen und diese Daten irgendwann mal an andere weiter- oder abgeben. Wenn er bei der Eingabe nicht schummelt, dann stehen seine Angaben also erstmal richtig in einer Datei. (Wenn er allerdings lieber etwas falsches eingibt, wird Excel ihn auch nicht daran hindern.)

Sobald er diese Datei oder eine Kopie davon bei der Sekretärin abgibt bzw. sobald die Sekretärin irgendwann von einer zentralen Abrechnungsdatei eine Kopie erstellt und sicher verwahrt - kann sie ja täglich machen, frage ich mich, wie man dann noch etwas manipulieren kann? Sich immer dem Risiko aussetzen, dass es eine oder mehrere Sicherungen gibt, mit deren Hilfe man in Null-Komma-Nix jede Eingabe, Änderung, Manipulation feststellen kann?

Irgendwas habe ich da noch nicht so ganz begriffen. Ich meine nur, dass man ja nicht irgendwelche wundersamen Excel-technischen Dinge anstellen muss, wo man erstmal bestimmte betriebliche Abläufe (Pflichten, Verantwortlichkeiten usw.) einführen und durchsetzen müsste. Eine einzelne Datei ist immer manipulierbar, das ist überhaupt keine Frage, da hilft im Zweifelsfall keine Blattschutz und nichts.

Am besten schützt man sich gegen Manipulationsversuche, indem man Daten redundant hält, regelmäßige und wirksame Kontrollen durchführt und dies allgemein bekannt macht. Das Gegenteil, sich auf eine ausgeklügelte technische Lösung zu verlassen, fest an ihren unüberwindlichen Schutz zu glauben, halte ich für groben Unfug.

Zum Glück gibt es die Meinungsfreiheit, d. h. Ihr braucht Euch nach meiner Meinung nicht richten.

Gruß,
CaroS

Antwort 15 von SK-2

Hallo,

du hasst ja recht aber ich habe mir diese konzept schon eine Woche lang überlegt und das ist der Beste Lösung für dieses Problem . Das die Angestellt irgend wie den Blatteschutz deaktivieren mit hilfe von programmen kann ich mir ihr nett vor stellen . Fast die hälft der Leute sind an der rente grenze haben vor dem Computer mehr Angst als vor einen Herzinfakt . Die EDV steht ihr vielleicht bei 10 % ausnutzung . Den rest machen se halt per Papier. Und ich soll das Halt änderen. Also gibt es nun eine Lösung für mein Problem oder nett.


MFG SK-2

Antwort 16 von CaroS

Hallo SK-2,

ich hab´ da so ein komisches Summen im Ohr. Wenn das hoffentlich mal nicht was mit dem Helfer-Syndrom 001 zu tun hat, das würde bei mir zu einer unangenehmen Starre in den Fingen führen.

Zu Deiner Frage: Ja, ich denke, es gibt eine Lösung. Coros hat sie Dir in AW2 im Prinzip schon genannt. Probier den folgenden Makro-Code einfach mal aus. Kopiere ihn dazu in das VBA-Projekt der Tabelle, in der der Zelleschutz aktiviert werden soll (oder ins VBA-Projekt der Arbeitsmappe). Dann musst Du auf jeden Fall noch das Blattschutzkennwort in den Code eintragen. Wenn er ok ist, kriegst Du ihn wahrscheinlich auch allein angepasst.

Sub Zellschutz()
Dim pwd As String, r As Range, z As Range

Rem Hier das Blattschutz-Kennwort im Klartext eintragen
pwd = "save1"

Set r = Application.InputBox(prompt:="Bitte einen Zellbereich auswählen, für den der Zellschutz " & _
"gesetzt oder aufgehoben werden soll.", Title:="Bereich auswählen", Default:="A1", Type:=8)
For Each z1 In r
If z1.Locked Then
    If MsgBox("Die Zelle " & z1.Address & " ist zurzeit geschützt. Soll der " & _
    "Zellschutz für den gesamten Bereich " & r.Address & " aufgehoben werden?", _
    vbYesNo, "Zellschutz aufheben fortfahren?") = vbYes Then
    ActiveSheet.Unprotect pwd
        Rem Blattschutz deaktivieren
        ActiveSheet.Unprotect pwd
        For Each z In r
            Rem Zellschutz für jede Zelle deaktivieren
            z.Locked = False
        Next
        Rem Blattschutz aktivieren
        ActiveSheet.Protect pwd
    Else
        MsgBox "Der Zellschutz im Bereich " & r.Address & " wird nicht " & _
        "aufgehoben.", , "Aktion abgebrochen"
    End If
Else
    If MsgBox("Die Zelle " & z1.Address & " ist zurzeit nicht geschützt. Soll der " & _
    "Zellschutz für den gesamten Bereich " & r.Address & " gesetzt werden?", _
    vbYesNo, "Zellschutz setzen fortfahren?") = vbYes Then
    ActiveSheet.Unprotect pwd
        Rem Blattschutz deaktivieren
        ActiveSheet.Unprotect pwd
        For Each z In r
            Rem Zellschutz für jede Zelle aktivieren
            z.Locked = True
        Next
        Rem Blattschutz aktivieren
        ActiveSheet.Protect pwd
    Else
        MsgBox "Der Zellschutz im Bereich " & r.Address & " wird nicht " & _
        "gesetzt.", , "Aktion abgebrochen"
    End If
End If
Exit For
Next

End Sub


Gruß,
CaroS