Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

VBA: Timer-Sperre





Frage

Guten Tag Um was es geht: Ich habe ein Arbeitszeit-Sheet, wo die User selbstständig Ihre arbeitszeit eintragen. Damit man aber nicht wochenlang zurück die Arbeitszeiten verändern kann möchte ich eine automatische sperre einrichten. Dazu habe ich hier aus dem Forum schon folgenden Code entnommen (siehe unten). soweit funktioniert das mit dem timer. nur wenn ich beispielsweise 24h als sperr-timer eingebe, dann sollte man 24h zeit haben die zelle zu bearbeiten. ABER wenn man das sheet schliesst und es gleich wieder öffnet sind wieder alle zellen gesperrt, auch diese wo man noch 23h zeit hätte zu korrigieren. Da ich in VBA nicht gut bin, hoffe ich, dass mir da jemand helfen kann. VBA Projekt "DieseArbeitsmappe": ----------------------------------------------------- Option Explicit Private Sub Workbook_Open() Zellen_sperren End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) Timer_stoppen End Sub StandardModul: ----------------------------------------------------- Option Explicit Public Zeitspanne As Variant Sub Zellen_sperren() Dim Bereich As Range For Each Bereich In ActiveSheet.UsedRange.Cells If WorksheetFunction.CountA(Bereich) <> 0 Then ActiveSheet.Unprotect "" Bereich.Locked = True ActiveSheet.Protect "" End If Next Zeitspanne = Now + TimeValue("00:05:00") Application.OnTime Zeitspanne, "Zellen_sperren" End Sub Sub Timer_stoppen() Application.OnTime EarliestTime:=Zeitspanne, Procedure:="Zellen_sperren", schedule:=False End Sub

Antwort 1 von Pistenschreck

Hallo skillY

Wäre es nicht einfacher nach Datum sperren als nach Stunden. Du hast ja bestimmt irgendwo ein Tagesdatum. Hier währe das Datum z.B. in Spalte A

Sub Zellen_SPERREN()
x = Date
For i = 2 To [A65536].End(xlUp).Row
If Cells(i, 1) < x - 1 Then Range(Cells(i, 1), Cells(i, 10)).Locked = True
Next i
End Sub

Mit dem x-1 kannst Du den gestrigen Tag noch bearbeiten.

Gruss Werner

Antwort 2 von skillY

Ja, mit Datum wäre das auch nicht schlecht. nur habe ich 365tage in dieser excel-tabelle. wie müsste dann der code genau lauten? wäre sehr nett, wenn du mir das genau zeigen könntest, dass ich nur noch kopieren muss, da ich echt keine ahnung habe von VBA :(

Antwort 3 von Pistenschreck

Hallo skillY

Das geht mir auch so. Ich sehe ja Deine Tabelle auch nicht und weiss deshalb nicht wo Deine Datums stehen, und um welchen Bereich es gilt, die Zellen zu schützen.

Das war nur ein Tipp von mir. Kannst Du die Tabelle mal auf´s Netz legen?

www.uploadagent.de

Gruss Werner

Antwort 4 von skillY

Hallo Werner

Ich habe dir Die Datei hochgeladen. Es sind glaube ich noch keine Dateums irgendwo vorhanden. das müsst man dann irgendwie noch einbringen?

http://www.uploadagent.de/files/1167722313/Arbeitszeit.xls

Hoffe du kannst mir somit weiterhelfen

Besten Dank und ein schönes neues Jahr wünsche ich

Gruss SkillY

Antwort 5 von skillY

hoffentlich hast du mich nicht vergessen :)

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: