Dateibenutzungszeit erfassen
abändern, und wieso auch immer, es funktioniert nicht mehr.
Eine wichtige Änderung ist wohl das Datumsformat, von
TTT.TT.MM auf TTT.TT.MM.JJ
http://www.hostarea.de/server-12/Dezember-40c83e057a…
Ich möchte einfach, dass wenn man diese Datei öffnet, sich
wenn noch keine Zeit in Spalte B eingetragen ist, dort die
momentan aktuelle Zeit neben dem aktuellen Datum eingetragen
wird, und in Spalte C die dann aktuelle Zeit, wenn die Datei
geschlossen wird. Für den Fall das man den PC neu starten
muss, soll dann natürlich die Anfangszeit in Spalte B erhalten
bleiben, nur in Spalte C soll sich dann die Endzeit
entsprechend ändern.
Hallo Jürgen,
deine Datei ist sehr Arbeitnehmerfreundlich. Wenn ich die Datei morgens aufmache und wieder zumache , desgleichen Abends, habe ich 10 Stunden an der Datei gearbeitet 
Kann ja sein daß es mal wer braucht, die genauen Dateiöffnungszeiten mitzuschreiben.
Nachfolgend der Code.
Die Datumsliste wird in Spalte A im Format TTT.TT.MM.JJ erwartet.
Die Zellfarben werden jetzt zur Laufzeit angepasst, ich dachte dadurch speichert die Datei schneller, dem ist aber nicht so.(bei XL97)
Hier die Beispielsdatei:
http://www.hostarea.de/server-12/Dezember-41ce7e5325…
Gruß
Reinhard
Im Modul „DieseArbeitsmappe“:
Option Explicit
'
Private Sub Workbook\_Open()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Visible = xlSheetVisible
Next ws
Worksheets("Hinweis").Visible = xlSheetVeryHidden
Call Zeit
Call Start
Call Farben
End Sub
'
Private Sub Workbook\_BeforeClose(Cancel As Boolean)
Dim ws As Worksheet
Worksheets("Hinweis").Visible = xlSheetVisible
For Each ws In ThisWorkbook.Worksheets
If ws.Name "Hinweis" Then ws.Visible = xlSheetVeryHidden
Next ws
Call Zeit
Call Ende
Worksheets("Zeiterfassung").UsedRange.Interior.ColorIndex = -4142
End Sub
Option Explicit
Public Merker As Date
'
Sub Zeit()
Dim Zelle As Range
With Worksheets("Zeiterfassung")
Set Zelle = .UsedRange.Find(DateValue(Now))
If Not Zelle Is Nothing Then
If Zelle.Offset(0, 1) = "" Then
Zelle.Offset(0, 1) = Format(Time, "hh:mm")
Else
Zelle.Offset(0, 2) = Format(Time, "hh:mm")
Zelle.Offset(0, 3) = Zelle.Offset(0, 2) - Zelle.Offset(0, 1)
End If
Else
MsgBox "Datum nicht gefunden"
End If
End With
End Sub
'
Sub Start()
Dim Zelle As Range
With Worksheets("Zeiterfassung")
Set Zelle = .UsedRange.Find(DateValue(Now))
If Not Zelle Is Nothing Then
If Zelle.Offset(0, 1) = "" Then
Merker = 0
Zelle.Offset(0, 1) = Format(Time, "hh:mm")
Else
Merker = Time
End If
Else
MsgBox "Datum nicht gefunden"
End If
End With
End Sub
'
Sub Ende()
Dim Zelle As Range
With Worksheets("Zeiterfassung")
Set Zelle = .UsedRange.Find(DateValue(Now))
If Not Zelle Is Nothing Then
Zelle.Offset(0, 4) = Format(Zelle.Offset(0, 4) - Merker + Time, "hh:mm:ss")
Else
MsgBox "Datum nicht gefunden"
End If
End With
End Sub
'
Sub Farben()
Dim Zei As Long, Letzte As Long
With Worksheets("Zeiterfassung")
Letzte = .Range("A" & .Rows.Count).End(xlUp).Row
.UsedRange.Interior.ColorIndex = -4142
.Range("A2:E" & Letzte).Interior.ColorIndex = 40
For Zei = 2 To Letzte
If WeekDay(.Cells(Zei, 1), 2) \> 5 Then
.Range(.Cells(Zei, 1), .Cells(Zei, 5)).Interior.ColorIndex = 34
End If
Next Zei
End With
End Sub