Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1660to1664
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

zwei Stoppuhren parallel laufen lassen

zwei Stoppuhren parallel laufen lassen
17.12.2018 11:53:28
Anja
Hallo zusammen,
ich benötige für einen Wettkampf (Judo) zwei Stoppuhren. Die eine nimmt die Kampfzeit auf, die andere wird bei einer Wertung dazu geschaltet und hat eine Dauer von 10 oder 20 Sekunden. Danach sollen beide Stoppuhren gleichzeitig anhalten, bzw. mit einem Tonsignal den Kampf als beendet erklären. Soweit habe ich das auch fast schon hinbekommen, allerdings halten die beiden Stoppuhren nicht gleichzeitig an. (1 Sekunde hängt die 1. Stoppuhr nach)
Vielleicht hat jemand eine Idee, wie ich das hinbekommen könnte?
Hier der Code dazu:
(Tabellenblatt)
Option Explicit
Private Sub CommandButton1_Click()
Startschalter
End Sub
Private Sub CommandButton2_Click()
Stoppschalter
End Sub
Private Sub CommandButton3_Click()
Startschalter2
End Sub
Private Sub CommandButton4_Click()
Stoppschalter2
End Sub
(Modul)
Option Explicit
Dim i As Integer
Dim j As Integer
Dim Stopp As Integer
Sub Startschalter()
If i = 0 Then
i = 1
If Stopp = 1 Then
Stopp = 0
i = 0
Exit Sub
End If
Application.OnTime Now + TimeValue("00:00:01"), "nexttick"
End If
End Sub
Sub nexttick()
If Stopp = 1 Then
i = 0
'Tabelle1.Range("B1").Value = Tabelle1.Range("B1").Value + TimeValue("00:00:01")
Exit Sub
End If
If Tabelle1.Range("B1") = 0 Then
i = 0
Exit Sub
End If
Tabelle1.Range("B1").Value = Tabelle1.Range("B1").Value - TimeValue("00:00:01")
If Tabelle1.Range("B1").Value > TimeValue("00:00:05") Then
Tabelle1.Shapes("TextBox 1").Fill.ForeColor.RGB = RGB(255, 255, 255)
Else
Tabelle1.Shapes("TextBox 1").Fill.ForeColor.RGB = RGB(255, 0, 0)
End If
i = 0
Startschalter
End Sub
Sub Stoppschalter()
i = 0
On Error Resume Next
Application.OnTime Now + TimeValue("00:00:01"), "nexttick", , False
End Sub
Sub Startschalter2()
If j = 0 Then
j = 1
Application.OnTime Now + TimeValue("00:00:01"), "nexttick2"
End If
End Sub
Sub nexttick2()
If Tabelle1.Range("J1").Value > TimeValue("00:00:19") Then
j = 0
Stopp = 1
Exit Sub
End If
Tabelle1.Range("J1").Value = Tabelle1.Range("J1").Value + TimeValue("00:00:01")
'Tabelle1.Range("J2").Value = Tabelle1.Shapes("TextBox 11").Value
j = 0
Startschalter2
End Sub
Sub Stoppschalter2()
Tabelle1.Range("J1") = 0
j = 0
i = 0
Stopp = 0
On Error Resume Next
Application.OnTime Now + TimeValue("00:00:01"), "nexttick2", , False
End Sub
Ich hoffe es ist einigermaßen verständlich. Die Variable i und j sind dafür da, dass ich nicht mehrfach hintereinander den Startschalter drücken kann und somit die Sekunden schneller ablaufen würden. Die Variable Stopp ist dafür gedacht, beide Stoppuhren zu stoppen, wenn die 2. Stoppuhr 20 Sekunden gelaufen ist.
VG
Anja

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: zwei Stoppuhren parallel laufen lassen
17.12.2018 15:33:15
Karl-Heinz
Hallo Anja,
da sich bisher niemand hierzu gemeldet hat, nehme ich mal an, dass niemand, genau wie ich, Deinen code durchleuchtet und so richtig verstanden hat, geschweige denn eine Lösung hat.
Bei Stoppuhren denke ich immer eher an die Timer-Funktion, die Millisekunden genau die vergangene Zeit zwischen zwei Ereignissen misst.
Hierzu habe ich mal eine Anregung beigefügt. Über den 2. Starter läuft eine 10 Sekundenzeit ab, danach werden beide Stoppuhren beendet und das Ergebnis ausgegeben.
Ich hoffe, ich habe Dein Anliegen überhaupt richtig verstanden. :-)
Bei Gefallen kannst Du es ja in Deinem Sinne weiter ausbauen.
Option Explicit
Global Startzeit1 As Long, Startzeit2 As Long
Global bStart1 As Boolean, bStart2 As Boolean
Sub Reset()
bStart1 = False: bStart2 = False
Startzeit1 = 0: Startzeit2 = 0
End Sub
Sub Startschalter()
If bStart1 = True Then Exit Sub 'Erst wieder, wenn Stopp gedrückt
bStart1 = True
Startzeit1 = Timer
Startzeit0 = 0
Application.OnTime Now + TimeValue("00:00:01"), "Ticker"
End Sub
Sub Stoppschalter()
Dim cZeit As Currency, sZeit As String
If bStart1 = False Then Exit Sub
cZeit = (Timer - Startzeit1)
If cZeit > 100 Then
sZeit = CStr(cZeit \ 60) & " Min. und " & CStr(cZeit - (cZeit \ 60)) & " Sek."
Else
sZeit = Format$(cZeit, " #.0 Sek.")
End If
Beep
Reset 'Stoppuhr wieder freischalten
MsgBox "Benötigte Zeit1 " & sZeit & "!", vbOKOnly Or vbInformation, "Stoppuhr 1"
End Sub
Sub Startschalter2()
If bStart1 = False Then Exit Sub 'Nur wenn schon Timer1 läuft
If bStart2 = True Then Exit Sub 'Erst wieder, wenn Stopp gedrückt
bStart2 = True
Startzeit2 = 10 '10 Sekunden Laufzeit
End Sub
Sub Stoppschalter2()
Stoppschalter
End Sub
Sub Ticker()
'Hier die Ausgaben handeln
If bStart1 = False Then Exit Sub 'Nur wenn schon Timer1 läuft
Application.StatusBar = CStr(Int((Timer - Startzeit1)) & " Sek.")
Tabelle1.Range("B1").Value = CStr(Int((Timer - Startzeit1)))
DoEvents
If Startzeit2 > 0 Then
Startzeit2 = Startzeit2 - 1 '10 sek abzählen
If Startzeit2 <= 0 Then
Call Stoppschalter: Exit Sub 'Uhren stoppen
End If
End If
Application.OnTime Now + TimeValue("00:00:01"), "Ticker" 'weiter geht es
End Sub

VBA=>HTML, (c) 2018 by KHV

viele Grüße
Karl-Heinz

Anzeige
AW: zwei Stoppuhren parallel laufen lassen
17.12.2018 16:06:09
Anja
Lieber Karl-Heinz, danke für den Code. Ich werde ihn sobald ich kann, ausprobieren. Ganz herzlichen Dank schon mal für deine Mühen!
Viele Grüße
Anja
AW: zwei Stoppuhren parallel laufen lassen
17.12.2018 16:13:14
Karl-Heinz
Sorry, noch einen Bug gesehen:
Sub Startschalter()
If bStart1 = True Then Exit Sub 'Erst wieder, wenn Stopp gedrückt
bStart1 = True
Startzeit1 = Timer

Startzeit2 = 0

Application.OnTime Now + TimeValue("00:00:01"), "Ticker"
End Sub

VBA=>HTML, (c) 2018 by KHV

viele Grüße
Karl-Heinz

VG KH
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige