2.2k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,
wir haben bei uns eine Excel-Mappe, in die mehrere Kollegen tagsüber verschiedene Eintragungen machen. Die Kollegen öffnen die Mappe, machen ihre Einträge und schließen die Mappe wieder.
Jetzt würde ich gerne wissen, wie lange die Mappe insgesamt an einem Tag bearbeitet worden ist.
Ich habe mir vorgestellt, dass bei jedem öffnen und schließen der Mappe dies auf einem Tabellenblatt vermerkt wird. Dann brauche ich nur noch die Zeit zusammenrechnen.

Wie ich ein Makro beim Öffnen bzw. Schließen einer Arbeitsmappe ablaufen lassen kann, habe ich schon herausgefunden (naja, wenigstens mal ein Anfang...).
Aber wie kann ich das Programm dazu überreden, den Öffnen- bzw. Schließenzeitpunkt in eine Tabelle einzutragen, dass ich die Zeiten berechnen kann.

Vielen Dank im Voraus für eure Hilfe
Jürgen

PS: dies soll NICHT der Mitarbeiterüberwachung dienen, sondern aufzeigen, wieviel Zeit durch (teilweise unnötige) Eintragungen verloren geht!

8 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Nick,

Dir ist schon klar das dies in Deutschland nicht zulässig ist. Solche Zeiten pro Mitarbeiter zu erfassen.

Range("A1") = Time

Gruß hajo
0 Punkte
Beantwortet von
[*][sup]
*Threadedit* 21.05.2009, 16:31:36
Admininfo: gelöscht wg. Sprechdurchfall, siehe die SN Nutzungsbedingungen.
[/sup]
0 Punkte
Beantwortet von
Ich muss schon sagen, dass es hier im Forum schon drollige Menschen gibt! Anstatt einem ordendlich zu helfen, gibt es unsinnige Kommentare.

Nochmal auf Deutsch: wir sind 10 Kollegen und müssen (teilweise) unsinnige Sachen in eine Tabelle eintragen. Wie soll ich sonst aufzeigen, wieviel Zeit verloren geht?

Schade (auch im Namen meiner Kollegen)....

Grüße

Jürgen
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Jürgen,

was geht an meinem Vorschlag nicht?
Das die Zelle angepast werden muss ist ja wohl selbstverstänfdlich.
Es war ja nur die Frage wie ich die Zeit in die Zelle bekomme.
Vielleicht solltest Du aber Now benutzen damit ein Tag auch dabei ist.

Gruß Hajo
0 Punkte
Beantwortet von
Hallo Hajo,

sorry, du warst nicht gemeint!
Ich sehe, du kannst mir folgen;-

Wenn jemand die Mappe öffnet, wird die Zeit in eine Zelle geschrieben, wird die Mappe geschlossen, kommt diese Zeit in die Zelle daneben.
Und wie mache ich es denn nun in einem Makro, dass er mir die Zelle nicht überschreibt, sondern beim nächsten Öffnen und Schließen der Mappe die Daten in die Zellen darunter einträgt?

Grüße

Jürgen
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Jürgen,

Option Explicit
Dim LoLetzte As Long

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With Worksheets("Tabelle3")
LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
.Cells(LoLetzte - 1, 2) = Now
.Cells(LoLetzte - 1, 3).Formula = "=" & .Cells(loetzte - 1, 2).Address & "-" & .Cells(LoLetzte - 1, 1).Address
.Cells(LoLetzte - 1, 3).NumberFormat = "[h]:mm:ss"
End With
End Sub

Private Sub Workbook_Open()
Dim LoI As Long
Dim LoJ As Long
Dim StMeldung As String
With Worksheets("Tabelle3")
LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
.Cells(LoLetzte, 1) = Now
End With
End Sub

In Tabelle3 wird das Protokoll geführt

Gruß Hajo
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Jürgen,

die Zeile hat mocch ein Fehler
.Cells(LoLetzte - 1, 3).Formula = "=" & .Cells(loetzte - 1, 2).Address & "-" & .Cells(LoLetzte - 1, 1).Address

da fehlt ein Buchstabe
.Cells(LoLetzte - 1, 3).Formula = "=" & .Cells(loletzte - 1, 2).Address & "-" & .Cells(LoLetzte - 1, 1).Address

Gruß Hajo
0 Punkte
Beantwortet von xquer Einsteiger_in (11 Punkte)
Hallo Hajo,

recht herzlichen Dank!
Es funktioniert wirklich so, wie ich es mir vorgestellt hatte. Sogar mit Berechnung:-))

Vielleicht werde ich es ja irgendwann mal schaffen, solche Skripte selbst hinzubekommen. Muss doch mal 'nen Lehrgang besuchen...

Grüße

Jürgen

PS: deine HP ist schon in meinen Favoriten;-)
...