Excel Stoppuhr

Hallo an Alle,

ich hab folgendes Problem und suche schon länger nach einer Lösung.
Ich hoffe einer kann mir hier helfen.

Folgendes:
Ich möchte in Excel die Zeit stoppen. Am besten im Format mm:ss (Minuten:Sekunden).
Die Stoppuhr soll losgehen wenn ich eine Taste drücke (od. Zelle) und soll beim nächsten drücken (od. auf Zelle klicken) stoppen und den Wert in eine Zelle schreiben.

Das beste wäre wenn man folgendes tun kann.

  1. Beim ersten Klicken/Drücken wird die StartUhrZeit in z.B Zelle A1 geschrieben (mm:ss)
  2. Beim zweiten Drücken wird die EndUhrZeit in z.B Zelle C1 geschrieben.
  3. Automatisch wird die gestoppte Zeit im Format mm:ss in die Zelle dazwischen, also in Zelle B1 geschrieben.
  4. Beim nächsten Klicken werden die Messwerte dann für andere Versuche eine Zeile darunter nach den selben Verfahren automatisch geschrieben.

Klingt auf den ersten Blick etwas kompliziert. Der Prozess ist einfach aber die Umsetzung.

Ich hoffe jemand kann mir helfen das in Excel 97 zu machen.

Vielen Dank im Voraus.

Mfg

Hallo Trader,

hier ist meine Lösung für dein Problem. Die Lösung sieht auch einfach aus. Es hat aber doch etwas Zeit gebraucht bis es klappte, da ich erst eine etwas kompliziertere Lösung erfolglos versucht hatte.

Die Startzeiten werden jeweils in Spalte B beginnened ab B3 eingetragen, die Endzeiten in Spalte D
Der Zelle B3 muss du den Namen „Startzeit“ geben.

Ich habe zwei Buttons vorgesehen, die VBA-Code ausführen.
Button 1 Trägt jeweils die Start-/Endzeit ein.
Button 2 Setzt die Stoppuhr zurück und löscht alle vorhandenen Einträge in den Spalten B und D.

Private Sub CommandButton1\_Click()
'
' Stoppuhr Makro
'
Dim Uhrzeit As Date
 Uhrzeit = Now() 'alternativ = Time()
 If IsEmpty(ActiveCell) Then 'Prüft ob Startzeit eingetragen ist
 ActiveCell.Value = Uhrzeit
 Else
 ActiveCell.Offset(0, 2).Range("A1").Select
 ActiveCell.Value = Uhrzeit
 ActiveCell.Offset(1, -2).Range("A1").Select
 End If
End Sub

Private Sub CommandButton2\_Click()
' Stoppuhrzuruecksetzen Makro
'
 Range("B3:B103").Select
 Selection.ClearContents
 Range("D3:smiley:103").Select
 Selection.ClearContents
 Application.Goto Reference:="Startzeit"
End Sub

Formel für Spalte C:

=WENN(ISTLEER(D3);"";(D3-B3))

So werden nur Zeitdifferenzen angezeigt, wenn auch eine Endzeit eingetragen ist.

Vor dem Starten der Stoppuhr muss du Zelle B3 markieren oder mit Button 2 die Stoppuhr zurücksetzen.

Viel Spass mit der Stoppuhr. Ich hoffe das hilft dir weiter.

Franz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Das beste wäre wenn man folgendes tun kann.

  1. Beim ersten Klicken/Drücken wird die StartUhrZeit in z.B
    Zelle A1 geschrieben (mm:ss)
  2. Beim zweiten Drücken wird die EndUhrZeit in z.B Zelle C1
    geschrieben.
  3. Automatisch wird die gestoppte Zeit im Format mm:ss in die
    Zelle dazwischen, also in Zelle B1 geschrieben.
  4. Beim nächsten Klicken werden die Messwerte dann für andere
    Versuche eine Zeile darunter nach den selben Verfahren
    automatisch geschrieben.

Hallo Trader,

Hier doch noch die etwas kompliziertere, aber narrensicherere Lösung.

Der Vorteil: Man kann während die Stoppuhr „läuft“ andere Einträge in der Tabelle machen.

Wichtig: Für beide Buttons muss unter Eigenschaften für ‚TakeFocusOnKlick‘ ‚false‘ gewählt werden.

Private Sub CommandButton1\_Click()
'
' Stoppuhr Makro
'
Dim Uhrzeit As Date
 Uhrzeit = Now() 'Alternativ = Time()
 Application.Goto Reference:="Startzeit"
 If IsEmpty(ActiveCell) Then 'Prüft ob Startzeit eingetragen ist
 ActiveCell.Value = Uhrzeit
 ActiveCell.Offset(0, 2).Range("A1").Select
 ActiveCell.Name = "Endzeit"
 Else
 Application.Goto Reference:="Endzeit"
 ActiveCell.Value = Uhrzeit
 ActiveCell.Offset(1, -2).Range("A1").Select
 ActiveCell.Name = "Startzeit"
 End If
End Sub

Private Sub CommandButton2\_Click()
' Stoppuhr zuruecksetzen Makro
'
 Range("B3").Select
 ActiveCell.Name = "Startzeit"
 Range("B3:B103").Select
 Selection.ClearContents
 Range("D3:smiley:103").Select
 Selection.ClearContents
 Application.Goto Reference:="Startzeit"
End Sub

Formel für Spalte C:

=WENN(ISTLEER(D3);"";(D3-B3))

Nach dem Einrichten der Buttons und der zugehörigen VBA-Codes zuerst mit Button 2 die Stoppuhr zurücksetzen, dann ist das erste Feld für die Startzeit korrekt gesetzt!

Gruß

Franz

Das beste wäre wenn man folgendes tun kann.

  1. Beim ersten Klicken/Drücken wird die StartUhrZeit in z.B
    Zelle A1 geschrieben (mm:ss)
  2. Beim zweiten Drücken wird die EndUhrZeit in z.B Zelle C1
    geschrieben.
  3. Automatisch wird die gestoppte Zeit im Format mm:ss in die
    Zelle dazwischen, also in Zelle B1 geschrieben.
  4. Beim nächsten Klicken werden die Messwerte dann für andere
    Versuche eine Zeile darunter nach den selben Verfahren
    automatisch geschrieben.

Hi Trader,
formatier die Spalten A-C als hh:mm:ss,
hole dir über Ansicht—Symbolleisten—SteuerelemtToolbox
zwei Buttons.
Dann weist du ihnen nachfolgende Codes zu. Nach den beiden Unterstrichen an den Zeilenenden muss jeweils ein Leerzeichen sein.
Gruß
Reinhard

Private Sub CommandButton1\_Click()
Range("A" & Range("A65536").End(xlUp).Row + 1) = Now()
End Sub

Private Sub CommandButton2\_Click()
Range("C" & Range("A65536").End(xlUp).Row) = Now()
Range("B" & Range("A65536").End(xlUp).Row) = \_
 Range("C" & Range("A65536").End(xlUp).Row) - \_
 Range("A" & Range("A65536").End(xlUp).Row)
End Sub

Das beste wäre wenn man folgendes tun kann.

  1. Beim ersten Klicken/Drücken wird die StartUhrZeit in z.B
    Zelle A1 geschrieben (mm:ss)
  2. Beim zweiten Drücken wird die EndUhrZeit in z.B Zelle C1
    geschrieben.
  3. Automatisch wird die gestoppte Zeit im Format mm:ss in die
    Zelle dazwischen, also in Zelle B1 geschrieben.
  4. Beim nächsten Klicken werden die Messwerte dann für andere
    Versuche eine Zeile darunter nach den selben Verfahren
    automatisch geschrieben.

Hi Trader,
geht auch mit nur einem Button.
Gruß
Reinhard

Private Sub CommandButton1\_Click()
If Range("A65536").End(xlUp).Row = Range("C65536").End(xlUp).Row Then
 Range("A" & Range("A65536").End(xlUp).Row + 1) = Now()
Else

 Range("C" & Range("A65536").End(xlUp).Row) = Now()
 Range("B" & Range("A65536").End(xlUp).Row) = \_
 Range("C" & Range("A65536").End(xlUp).Row) - \_
 Range("A" & Range("A65536").End(xlUp).Row)
End If
End Sub

Hallo Franz,
Range(„B3“).Select
ActiveCell.Name = „Startzeit“
Range(„B3:B103“).Select
Selection.ClearContents
Range(„D3:smiley:103“).Select
Selection.ClearContents
Application.Goto Reference:=„Startzeit“

kannst du zusammenfassen zu:

Range(„B3“).Name = „Startzeit“
Range(„B3:B103“,„D3:smiley:103“).ClearContents
Application.Goto Reference:=„Startzeit“

und
ActiveCell.Offset(0, 2).Range(„A1“).Select
ActiveCell.Name = „Endzeit“
zu
ActiveCell.Offset(0, 2).Name = „Endzeit“
wobei ich das Range(„A1“) nicht verstehe?!

bzw
Application.Goto Reference:=„Endzeit“
ActiveCell.Value = Uhrzeit
ActiveCell.Offset(1, -2).Range(„A1“).Select
ActiveCell.Name = „Startzeit“
zu
Range(„Endzeit“)=now()
Range(„Endzeit“).Offset(1, -2).Name = „Startzeit“

Gruß
Reinhard

Private Sub CommandButton1_Click()

’ Stoppuhr Makro

Dim Uhrzeit As Date
Uhrzeit = Now() 'Alternativ = Time()
Application.Goto Reference:=„Startzeit“
If IsEmpty(ActiveCell) Then 'Prüft ob Startzeit
eingetragen ist
ActiveCell.Value = Uhrzeit

ActiveCell.Offset(0, 2).Range(„A1“).Select
ActiveCell.Name = „Endzeit“

Else
Application.Goto Reference:=„Endzeit“
ActiveCell.Value = Uhrzeit
ActiveCell.Offset(1, -2).Range(„A1“).Select
ActiveCell.Name = „Startzeit“
End If
End Sub

Private Sub CommandButton2_Click()
’ Stoppuhr zuruecksetzen Makro

Range(„B3“).Select
ActiveCell.Name = „Startzeit“
Range(„B3:B103“).Select
Selection.ClearContents
Range(„D3:smiley:103“).Select
Selection.ClearContents
Application.Goto Reference:=„Startzeit“
End Sub

Formel für Spalte C:

=WENN(ISTLEER(D3);"";(D3-B3))

Nach dem Einrichten der Buttons und der zugehörigen VBA-Codes
zuerst mit Button 2 die Stoppuhr zurücksetzen, dann ist das
erste Feld für die Startzeit korrekt gesetzt!

Gruß

Franz

Hallo Reinhard,

vielen Dank für die nützlichen Hinweise

ich starte halt meinen VBA-Code öfters mit einem Aufzeichnungs-Makro und ergänze dann zusätzliche Anweisungen.
Da bleibt dann schon die eine oder andere Vereinfachung/Einkürzung auf der Strecke.

Gruß
Franz

Hallo Franz,
Range(„B3“).Select
ActiveCell.Name = „Startzeit“
Range(„B3:B103“).Select
Selection.ClearContents
Range(„D3:smiley:103“).Select
Selection.ClearContents
Application.Goto Reference:=„Startzeit“

kannst du zusammenfassen zu:

Range(„B3“).Name = „Startzeit“
Range(„B3:B103“,„D3:smiley:103“).ClearContents
Application.Goto Reference:=„Startzeit“

und
ActiveCell.Offset(0, 2).Range(„A1“).Select
ActiveCell.Name = „Endzeit“
zu
ActiveCell.Offset(0, 2).Name = „Endzeit“
wobei ich das Range(„A1“) nicht verstehe?!

bzw
Application.Goto Reference:=„Endzeit“
ActiveCell.Value = Uhrzeit
ActiveCell.Offset(1, -2).Range(„A1“).Select
ActiveCell.Name = „Startzeit“
zu
Range(„Endzeit“)=now()
Range(„Endzeit“).Offset(1, -2).Name = „Startzeit“

Gruß
Reinhard

Vielen Dank für eure Hilfe. trader1001