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

Ausgedruckt am: 28.03.2024 um 14:03 Uhr

Mitglied: emeriks
emeriks 31.08.2014 um 19:26:24 Uhr
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.
Mitglied: colinardo
colinardo 31.08.2014 aktualisiert um 20:02:27 Uhr
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
Mitglied: clutcher
clutcher 02.09.2014 um 19:49:28 Uhr
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