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
--------------------------------
17.02.2016
18.02.2016