Tipps & Tricks 16.08.2004, 11:00 Uhr

Excel-Zeiterfassung automatisieren

Ich arbeite mit einer selbst erstellten Zeiterfassung in Excel. Für jeden Tag habe ich 4 Kommt- und Geht-Felder angelegt. Am Zeilenende berechne ich jeweils die Tagesunter-/überzeit. Pro Monat und für das Jahrestotal habe ich ein Registerblatt erstellt. Nun frage ich mich, ob es möglich ist, die Eingaben beispielsweise mit einem Makro soweit zu automatisieren, dass bei der Dateiöffnung der Cursor automatisch zum richtigen Datum (Spalte 2) springt, dass ich nur noch einen Button anlegen müsste mit «kommt» und einen mit «geht», sodass bei dessen Anwahl sofort die aktuelle Uhrzeit in das jeweils nächste Feld von «kommt» oder «geht» (aktuelle Datumszeile Spalte 3 ff.) eingefügt wird.
Das lässt sich mit einigen Makros realisieren. Das erste Makro muss das aktuelle Datum eruieren. Es wird im VisualBasic-Editor in "Diese Arbeitsmappe" eingefügt. Es durchläuft die Zeilen B1 bis B40 des aktiven Arbeitsblattes und aktiviert die Zelle, die das aktuelle Datum enthält.
Danach benötigen Sie 4 Schaltflächen und jeweils ein Makro dazu. Diese Makros werden direkt an die Schaltflächen auf der Tabelle gebunden. Das heisst, Sie müssen anfänglich dieses Blatt fertig erstellen, dann kann es kopiert und die Datumsspalte frisch ausgefüllt werden.
Die Makros setzen die beim Klicken aktuelle Uhrzeit in das um die benötigte Anzahl Spalten verschobene Feld in der aktuellen Zeile, also der Zeile mit dem aktuellen Datum (hier der 15.8.).
--------------------------------
MAKROS ZUM KOPIEREN:
--------------------------------
1. IN DIESE ARBEITSMAPPE
--------------------------------
Private Sub Workbook_Open()
Dim Zelle As Range
For Each Zelle In _
ThisWorkbook.ActiveSheet.Range("B1:B40").Cells
If Zelle.Value = Date Then
Zelle.Select
End If
Next Zelle
End Sub
--------------------------------
2. SCHALTFLÄCHEN IN TABELLE
--------------------------------
Private Sub CommandButton1_Click()
ActiveCell.Offset(0, 1).Value = Format(Now, "h:mm")
End Sub
Private Sub CommandButton2_Click()
ActiveCell.Offset(0, 2).Value = Format(Now, "h:mm")
End Sub
Private Sub CommandButton3_Click()
ActiveCell.Offset(0, 3).Value = Format(Now, "h:mm")
End Sub
Private Sub CommandButton4_Click()
ActiveCell.Offset(0, 4).Value = Format(Now, "h:mm")
End Sub
--------------------------------


Kommentare
Avatar
Paula33
17.02.2016
Ich suche gerade ein geeignetes Zeiterfassungssystem. Leider ist so eine einfach Excel-Zeiterfassung für meine Ansprüche nicht ausreichend. Dieses System scheint mir für meine Bedürfnisse relativ gut geeignet: ...gecosoft...[Mod: Werbelink gelöscht] Werde mir aber deine Tabelle auch noch mal anschauen, vielleicht lässt sich die auch noch ein bisschen anpassen. Grüße

Avatar
SammyGirl
18.02.2016
Willst du das denn automatisch erfassen oder manuell? Also ich meine: mit Karte und Lesegerät oder nur in einem Programm? Ich verstehe nicht wozu du das brauchst.