Microsoft Excel

Herbers Excel/VBA-Archiv

Zellschutz nach Eingabe nur beim Speichern


Betrifft: Zellschutz nach Eingabe nur beim Speichern von: Armin
Geschrieben am: 07.08.2018 16:21:21

Hallo zusammen,

ich habe hier schon viele interessante Dinge gelesen und mir Hilfe abgeschaut.
Auch wenn es teilweise schon ähnliche Problemstellungen gab, komme ich bei der Übertragung auf meine Datei nicht weiter, da VBA < 0!!

Aktuell ist mein Problem folgendes: Kassenblatter zur Kassenführung
Spalten: Datum, Vorgang, Einnahme, Ausgabe, Kassenstand, Signum der Person
Leider hab ich Probleme mit dem Upload!?

- es gibt zellen, die ich immer gesperrt haben möchte (z.B.Kassenstand wird berechnet oder die Spaltenüberschriften)
- die anderen Zellen sollen bearbeitet werden können - solange bis man speichert
- es wird ca. 10 Seiten (Tabellen) geben auf denen das Gleiche passieren soll
- die Tabellen hängen zusammen, weil der Übertrag mit auf die Neue Seite genommen wird

Ich hatte folgenden Code eingefügt:





Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xRg As Range
    On Error Resume Next
    Set xRg = Intersect(Range("A1:h100"), Target)
    If xRg Is Nothing Then Exit Sub
    Target.Worksheet.Unprotect Password:="123"
    xRg.Locked = True
    Target.Worksheet.Protect Password:="123"
End Sub

Der Schutz ist mir zu krass - da darf man sich gar keinen Fehler erlauben - selbst wenn man auf "Entf." drückt ist die Zelle danach gesperrt.

Wäre klassen, wenn ihr mir helfen könnt.

Grüße
Armin

  

Betrifft: AW: Zellschutz nach Eingabe nur beim Speichern von: Armin
Geschrieben am: 07.08.2018 16:27:36

https://www.herber.de/bbs/user/123188.xls
Upload ging doch noch


  

Betrifft: AW: Zellschutz nach Eingabe nur beim Speichern von: KlausF
Geschrieben am: 07.08.2018 19:39:25

Hallo Armin,

ich denke, dass eine Eingabeänderung immer noch möglich sein sollte,
solange ich das File offen habe. Erst beim Schliessen sollten die Eingaben
geschützt werden. Dann in etwa so:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim zelle As Range
Sheets(1).Unprotect
For Each zelle In Sheets("Tabelle1").UsedRange
If zelle.Value <> "" Then
zelle.Locked = True
Else
zelle.Locked = False
End If
Next
Sheets("Tabelle1").Protect
End Sub
Mit Rechtsmausklick auf den Tabellenreiter und den Code eingeben

Gruß
Klaus


  

Betrifft: AW: Zellschutz nach Eingabe nur beim Speichern von: Armin
Geschrieben am: 08.08.2018 16:25:00

Hi Klaus,

vielen Dank für deine Antwort - ich habs gleich ausprobiert - leider hats noch nicht geklappt.

Folgendes habe ich gemacht:
- Datei als Excel Makro gespeichert
- Tabelle "Seite 1" in Tabelle 1 umbenannt
- alle zellen markiert und haken bei Schutz rausgemacht
- Tabellenblatt angeklickt - Code anzeigen - und eingefügt
- Danach wollte ich einen Blattschutz für das Blatt mit Passwort (beispielshalber 123)
aktivieren

Meiner Meinung nach fehlt in dem Code noch, dass dieses konkrete aufghoben und wieder aktiviert wird?
Oder mach ich sonst noch irgendetwas falsch - #schäm

Bei mir waren nach dem speichern die Zellen noch bearbeitbar.

Wenn ich dann mehrere Seiten des Kassenblattes habe, kann ich den Code dann auch auf diese einfügen? Müsste ja nur das Tabellenblatt umbenennen oder?

Danke schonmal
Armin


  

Betrifft: noch mal neu von: KlausF
Geschrieben am: 08.08.2018 17:45:39

Hallo Armin,
sorry, da hatte ich einen zu schnellen Finger, deshalb noch einmal neu von Anfang an:

1. Alle Zellen auf allen Sheets auf unlocked stellen
2. mit Rechtsmausklick auf ein Sheet-Tab gehen und unter "DieseArbeitsmappe" (oder "ThisWorkbook") folgendes eingeben

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim wks As Worksheet
Dim rng As Range
On Error Resume Next
For Each wks In Worksheets
Select Case wks.Name
    'Hier alle Blattnamen eintragen, die geschuetzt werden sollen:
    Case "Klaus", "Peter", "Ralf"
    With wks
        .Unprotect Password:="123"
        For Each rng In wks.UsedRange
            If rng.Value <> "" Then
                rng.Locked = True
            Else
                rng.Locked = False
            End If
        Next
        .Protect Password:="123"
    End With
    Case Else
    End Select
Next wks
On Error GoTo 0
Set rng = Nothing
End Sub
Da wo ich im Code "Klaus", "Peter", "Ralf" geschrieben habe musst Du die Sheets angeben, in denen der Schutz greifen soll
https://www.herber.de/bbs/user/123214.xls
Sollte jetzt klappen

Gruß
Klaus


  

Betrifft: AW: noch mal neu von: Armin
Geschrieben am: 09.08.2018 16:37:08

Hallo Klaus,

wenn ich meine Datein in deine Datei kopiere gehts. Damit kann ich auch arbeiten - funktioniert 100%. Danke!!

Kopiere ich deinen Code in meine Datei gehts nicht. Als Unterschied habe ich festgesgellt:
bei dir steht "Workbook" und rechts Before Close

bei mir habe ich nach dem einfügen links Worksheet oder (allgemein) als dropdown und rechts Workbook_BeforeClose

Habe brav die Tabellen Umbennannt, Zellschutz raus usw. - naja macht aber nix.


Folgendes habe ich noch festgestellt:

ich gebe Daten ein und gehe auf speichern (diskettensymbol), danach auf schließen und nicht speichern "Nein". Nach dem öffnen sind die Daten immer noch da und ohne Zellschutz bearbeitbar.
Dies birgt natürlich doch noch ein kleines Risiko, dass evtl. nochmal was geändert werden kann.

Kann man den Zellschutz bereits beim manuellen speichern aktivieren - dann wäres 1000%.

Danke dir schonmal für deine Mühe und Hilfe

Gruß
Armin


  

Betrifft: neu die zweite von: KlausF
Geschrieben am: 09.08.2018 21:48:53

Hallo Armin,
anbei die erweiterte Version

https://www.herber.de/bbs/user/123243.xls

Gruß
Klaus


  

Betrifft: AW: neu die zweite von: Armin
Geschrieben am: 10.08.2018 08:52:29

Hallo Klaus,

ich glaube wir sind fertig - funktioniert Bestens.
Ich danke dir herzlich - habe dich auch lobenswert
auf der Arbeit erwähnt und nicht die Ehre eingesteckt :-)
- wäre auch peinlich wenns rauskommt.

Gute Zeit und Servus.
Armin


  

Betrifft: Danke für Feedback von: KlausF
Geschrieben am: 10.08.2018 09:20:04

Hallo Armin,

danke für Dein Feedback!

Have a nice time
Klaus


Beiträge aus dem Excel-Forum zum Thema "Zellschutz nach Eingabe nur beim Speichern"