clutcher
Goto Top

Excel: Zelle nach Eintrag sperren und beim schliessen sichern

Hallo ihr wissenden

Ich möchte gerne in der Zelle C2 eine dreistellige Zahl eintragen und diese mit der Entertaste sperren. Anschliessend soll beim schliessen des Arbeitsblattes es gesichert werden.
Beim nächsten öffnen des Arbeitsblattes wird Zelle C3 gleich wie oben bearbeitet.
Anschliessend Zell C5 und C6
Anschliessend Zell C8 und C9
Anschliessend Zell C11 und C12
Anschliessend Zell C14 und C15
Im weitern möchte ich dieses Arbeitsblatt kopieren, d.h die VBA müssen auch der "Kopie" funktionieren.
Danke für Eure Hilfe

Content-Key: 247920

Url: https://administrator.de/contentid/247920

Printed on: April 19, 2024 at 21:04 o'clock

Member: emeriks
emeriks Aug 31, 2014 at 17:26:24 (UTC)
Goto Top
Hi,
zeichne einfach ein Makro auf und gut ist. Dabei werden die Befehle generiert und Du musst das dann ggf. nur etwas anpassen möchten.
Doch da Du ja nicht verrätst, wass Du hast, kann ich Dir auch nicht sagen, was Du jetzt brauchst.

E.
Member: colinardo
colinardo Aug 31, 2014 updated at 18:02:27 (UTC)
Goto Top
Hallo clutcher, Willkommen auf Administrator.de!
Schau es dir in diesem Demo-Sheet ab :Demo_Lock_Cells_247920.xlsm.
Achtung: Die Events sind sofort aktiv, d.h. es wird das Sheet in dem Zustand ohne Nachfrage gespeichert wenn du es schließt! Wenn du das für die Entwurfsphase des Sheets verhindern willst, schalte im Makro-Editor den Entwurfsmodus ein (das Icon mit dem Geodreieck und dem Stift).
Die Zellen die im jeweiligen Sheet anfänglich bearbeitet werden dürfen müssen in den Eigenschaften der Zelle auf dem Tab Schutz freigegben werden. Die Funktion ist im jetzigen Zustand für jedes Arbeitsblatt in der Arbeitsmappe aktiv und versieht die gewünschten Zellen mit einem Schreibschutz sobald die Zelle den Bearbeitungsmodus verlässt.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    'Als gespeichert festlegen damit keine Nachfrage von Excel kommt  
    ActiveWorkbook.Saved = True
    'Speichere das Sheet automatisch bevor es geschlossen wird  
    ActiveWorkbook.Save
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim ws As Worksheet, changeRange As Range
    'Arbeitsblatt auf dem die Änderung vorgenommen wird  
    Set ws = Sh
    'Bereich der überwacht wird  
    Set changeRange = ws.Range("C2,C3,C5,C6,C8,C9,C11,C12,C14,C15")  
    'Wenn eine Änderung an einer Zelle vorgenommen wird die in der Liste steht ...  
    If Not Application.Intersect(changeRange, Target) Is Nothing Then
        If ws.ProtectContents = True Then
            'Wenn das Sheet geschützt ist entferne kurzfristig den Schutz um die Zelle als gesperrt festzulegen.  
            ws.Unprotect ""  
            Target.Locked = True
        Else    'Sheet ist ungeschützt  
            Target.Locked = True
        End If
        'aktiviere den Blattschutz mit leerem Kennwort  
        ws.Protect "", Contents:=True  
    End If
End Sub
Grüße Uwe
Member: clutcher
clutcher Sep 02, 2014 at 17:49:28 (UTC)
Goto Top
Hallo Uwe

Ich habe dein Code verwendet und ich denke es funktioniert. Ich werde übers Wochende die Tabelle vervollständigen. Voresrt vielen Dank für die Hilfe, wenn Tabelle komplett, werde ich Vollzug vermelden.
LG Walter