Clever-Excel-Forum

Normale Version: zeitgesteuertes Löschen von Inhalten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,
vielleicht kann mir einer bei folgendem Problem helfen: Das Kennwort für den Blattschutz ist laramari

Die anhängende Datei steht zentral auf einem Laufwerk und alle Beteiligten können darauf zugreifen (Informationsvereinfachung).
Ein Makro ist hinterlegt, dass die Datei nach 3 Minuten schließt, damit die Datei wieder verfügbar wird für andere Nutzer.
Die Zellinhalte (Zahlen, Info an den Arzt) werden am Folgetag automatisch gelöscht, wenn die Datei nach 8.51 h geöffnet wird.
Das funktioniert gut, wenn das Datum einstellig ist am Vortag. Auch wenn es zweistellig ist am Vortag. Jedoch beim Wechsel z.B. vom 9.12.auf den 10.12. und vom 30.11. auf den 1.12. löst das Makro nicht aus und finde nicht die Ursache. Ich habe schon im Code  "DD.MM.YYYY hh:mm"  durch "D.MM.YYYY hh:mm" ersetzt, aber das Problem bleibt.
Ich habe keine Idee, wie ich den Datumswechsel von einstelligen auf zweistelligen Folgetag und umgekehrt einstellen soll, so dass auch dann die Zellinhalte gelöscht werden. Hat vielleicht jemand hier eine Idee?
Das würde mir sehr helfen.

Viele Grüße und vielen Dank für Euer Know How und die Zeit
Ritchie

So sieht der Code aus:

Option Explicit

Private Sub Workbook_Open()
    If Format(Now(), "D.MM.YYYY hh:mm") > Format(DateSerial(Year(Now()), Month(Now()), Day(Now())) + TimeSerial(8, 50, 0), "D.MM.YYYY hh:mm") And Format(Range("Datum"), "D.MM.YYYY hh:mm") < Format(DateSerial(Year(Now()), Month(Now()), Day(Now())) + TimeSerial(8, 50, 0), "D.MM.YYYY hh:mm") Then
        Daten.Unprotect "laramari"
        Range("Eingaben").
ClearContents
        Range("Datum").Value = Format(DateSerial(Year(Now()), Month(Now()), Day(Now())) + TimeSerial(Hour(Now()), Minute(Now()), 0), "D.MM.YYYY hh:mm")
        Daten.Protect "laramari"
    End If
    dteCloseTime = Now + TimeSerial(0, 2, 0)
    Application.OnTime dteCloseTime, "DoClose"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime dteCloseTime, "DoClose", , False
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
Application.OnTime dteCloseTime, "DoClose", , False
dteCloseTime = Now + TimeSerial(0, 2, 0)
blnCloseNow = False
Application.OnTime dteCloseTime, "DoClose"
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
On Error Resume Next
Application.OnTime dteCloseTime, "DoClose", , False
dteCloseTime = Now + TimeSerial(0, 2, 0)
blnCloseNow = False
Application.OnTime dteCloseTime, "DoClose"
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
Application.OnTime dteCloseTime, "DoClose", , False
dteCloseTime = Now + TimeSerial(0, 2, 0)
blnCloseNow = False
Application.OnTime dteCloseTime, "DoClose"
End Sub
Hi,

ich denke, du denkst zu kompliziert.
Tage bekommen in excel immer die 1 das heißt seit dem 1.1.1900 wird für jeden tag 1 dazugezählt.
dementsprechend sind stunden 1/24 vom tag
guug mal in die zelle welcher Zahlenwert er für deine Uhrzeit macht und rechne damit, und bei tag sieht es genauso aus

Vielleicht rechnet er dann damit
Format() ergibt einen TEXT
Der Text "9" ist größer als "10"
Lasse Format() weg.

Gruß Ralf