Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1648to1652
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellen automatisch nach Datum sperren

Zellen automatisch nach Datum sperren
16.10.2018 19:03:50
Benedict
Hallo zusammen!
In meiner Zeiterfassungstabelle https://www.herber.de/bbs/user/124667.xlsx sind in A4:A369 die Daten, in E4:E369 die Abwesenheiten, in H4:K369 jeweils Beginn und Ende der Arbeit. Nun möchte ich die Zellen (Zeilen) früherer Daten automatisch sperren, idealerweise mit "Freiheit" zwei Arbeitstage zurück für die Uhrzeiten, 14 Tage für die Abwesenheiten. Der Rest der Tabelle ist gesperrt, das Blatt geschützt (jetzt natürlich nicht!).
Mit VBA kenne ich mich nicht aus, habe in div. Foren gesucht, konnte lediglich direkt nach Eingabe sperren - aber das liess auch unmittelbar nach Fehleingabe keine Korrektur zu. Und aus den Beispielen schaffe ich nicht, selbst einen Code zu erstellen. Kann mir jemand symbolisch gütig unter die Arme greifen?
Herzlichen Dank!
Benedict

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen automatisch nach Datum sperren
16.10.2018 19:40:57
Hajo_Zi
Hallo Benedict,
das geht nicht, da eine XLSX Datei kein Makro enthalten kann.
Ich sehe keinen Grund eine Datei 2x zu speichern. Ich führe keine Liste unter welchem Dateinamen ich die Datei gespeichert habe.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
AW: Zellen automatisch nach Datum sperren
17.10.2018 11:34:50
UweD
Hallo
Da das Blatt geschützt werden soll, und das Makro trotzdem Änderungen vornehmen darf,
muss der Schutz mit der Option userinterfaceonly vorgenommen werden.
Das geht mit diesem Code
in ein Modul
Sub Sperren()
    Sheets("Zeiterfassung").Protect userinterfaceonly:=True
End Sub


das hier muss in DieseArbeitsmappe
Dann läuft das beim Starten automatisch ab
Microsoft Excel Objekt DieseArbeitsmappe
Option Explicit 
 
Private Sub Workbook_Open() 
    Dim TB, RDaten As Range, RAbw As Range, RBegEnd As Range, TMP As Range 
    Dim iAbw As Integer, iBegEnd As Integer, iVon As Integer, iBis As Integer 
    Set TB = Sheets("Zeiterfassung") 
    Set RDaten = TB.Range("A4:A369") 
    Set RAbw = TB.Range("E4:E369") 
    Set RBegEnd = TB.Range("H4:K369") 
    iAbw = 14 
    iBegEnd = 2 
     
    'Reset 
    RAbw.Locked = True 
    RBegEnd.Locked = True 
     
    iVon = WorksheetFunction.Match(CDbl(Date - iAbw), RDaten, 1) 
    iBis = WorksheetFunction.Match(CDbl(Date), RDaten, 1) 
    RAbw.Offset(iVon - 1, 0).Resize(iBis - iVon + 1, 1).Locked = False 
     
    iVon = WorksheetFunction.Match(CDbl(Date - iBegEnd), RDaten, 1) 
    RBegEnd.Offset(iVon - 1, 0).Resize(iBis - iVon + 1, 1).Locked = False 
     
End Sub 

LG UweD
Anzeige
AW: Zellen automatisch nach Datum sperren
17.10.2018 20:46:10
Benedict
Hallo UweD
Herzlichen Dank für Deine Antwort - ich bin am Blut lecken, VBA zu lernen :-) !
Benedict
Danke für die Rückmeldung owT
17.10.2018 20:58:19
UweD
AW: Danke für die Rückmeldung owT
18.10.2018 14:28:02
Benedict
Hallo UweD
Mein erster Code läuft - juhu! Vielleicht habe ich ein wenig umständlich programmiert, aber es läuft nun richtig prima. Ich hätt dennoch zwei Fragen an den Experten:
1) gibt es eine Möglichkeit, den Code verlässlich zu schützen? Im Forum und sonstwo tönts ja ziemlich witzlos, da ein PW nichts tauge... echt?
2) Wozu ist das Modul
Sub Sperren()
Sheets("Zeiterfassung").Protect UserInterfaceOnly:=True
End Sub
? Wenn ich es lösche, scheint nichts zu passieren, ich kann gleichwohl die Mappe öffnen, ändern etc.
Nochmal herzlichen Dank, ohne Deinen Anschub wäre ich nicht so weit gekommen!
Benedict
Anzeige
AW: Danke für die Rückmeldung owT
18.10.2018 15:07:26
UweD
1)
- ja, stimmt. Die bestehenden Mittel schrecken nur die Standarduser ab
2)
- Das Sperren von Zellen ist nur wirksam, wenn das Blatt selbst danach gesperrt wird.
- Wenn das so ist, kann den Benutzer, aber AUCH kein VBA- code diese Veränderungen vorzunehmen
- Du hast also 2 Möglichkeiten
= im Code am Anfang das Blatt entsperren, den Code abarbeiten und am Ende wieder sperren
= oder beim Sperren des Blattes die Option "UserInterfaceOnly:=True" zu benutzen
= damit ist der User gesperrt, VBA kann aber ändern
ich kann gleichwohl die Mappe öffnen, ändern etc.
dann hast du beim ersten Sperren des Blattes zu viele Optionen zugelassen
LG UweD
Anzeige
AW: Danke für die Rückmeldung owT
18.10.2018 15:27:49
Benedict
Option Explicit
Private Sub Workbook_Open()
ActiveSheet.Unprotect Password:="1234"
If Sheets("Zeiterfassung").Cells(370, 13) = "0" Then
ActiveSheet.Protect Password:="1234"
Else:
End If
End Sub
So sperrt es mir das Blatt, wenn ich die Anfangsangaben eingetragen habe (Kontrolle in M370), vorher bleibts offen. Echt cool, so Spielereien mit Bezug zum richtigen Leben. Nochmal und abschliessend Danke!
AW: Danke für die Rückmeldung owT
18.10.2018 15:58:53
UweD
Hallo
dann aber bitte so..
Falls du mal auf einem anderen Blatt bist und die Datei schließt
Private Sub Workbook_Open()
    With Sheets("Zeiterfassung")
        .Unprotect Password:="1234"
    
        If .Cells(370, 13) = "0" Then
    
        '.... 
    
        .Protect Password:="1234"
        Else:
    
        End If
    End With
End Sub
LG UweD
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige