Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Stoppuhr

Betrifft: Stoppuhr von: Stefan
Geschrieben am: 04.11.2014 16:23:12

Hallo :)

meine Aufgabe ist es mit VBA ein Stoppuhr zu programmieren.
Die Stoppuhr soll nach einer zufällig gewählten Zeit ein optisches Signal ausgeben.
Ein Frühstart soll angezeigt werden.

Mein Problem ist, (glaub ich zumindest) dass ich während Application.OnTime keine Eingabe in das Programm einlesen kann und er deshalb die Fehlermeldung erst verspätet bringt.

Ich hatte auch mal noch ein akustisches Signal drin, welches allerdings viele Fehlerquellen mit sich gebracht hat, da er während der Tonausgabe nichts anderes gemacht hat.

Hat jemand eine Idee, wie ich die Fehlermeldung direkt nach einem "Frühstart" angezeigt bekomme?
Und eventuell eine Idee wie ich ein akustisches Signal rein bekomme?

Vielleicht fürs Verständnis:
die Messung wird dreimal hintereinander durchgeführt
zum Schluss wird der Mittelwert gebildet


Sub Reaktionstest()

 Dim sek As Integer
 Dim endzeit As Double
 Dim reaktionszeit As Double
 Dim i As Integer
 Dim mittelwertzeit As Double
 Dim werteins As Double
 Dim wertzwei As Double
 Dim wertdrei As Double
 
 
For i = 1 To 3
 
 
stopp = False
 

 sek = ((6 - 2 + 1) * Rnd + 2)                                     
  

Application.OnTime Now + sek / 86400, "Signalausgabe"              

 
 While stopp = False
 
       DoEvents
 Wend  
                                                             
 endzeit = GetTime
 reaktionszeit = (endzeit -startzeit) /1000                     
 
 If reaktionszeit < 0 Then
 
 MsgBox "Frühstart", vbOKOnly + vbCritical, "Fehlermeldung"
 
 End
 
 Else
 
 
If i = 1 Then
 UserForm5.Label14 = reaktionszeit          
 Worksheets("Reaktionstest").Range("A1").Value = reaktionszeit
 

ElseIf i = 2 Then
 UserForm5.Label15 = reaktionszeit
 Worksheets("Reaktionstest").Range("A2").Value = reaktionszeit
 
 
ElseIf i = 3 Then
 UserForm5.Label16 = reaktionszeit
 Worksheets("Reaktionstest").Range("A3").Value = reaktionszeit
 
 End If
 
 UserForm5.Label23.BackColor = vbWhite  'Optisches Signal löschen
 End If
 
 Next
 
 werteins = UserForm5.Label14
 wertzwei = UserForm5.Label15
 wertdrei = UserForm5.Label16
 
 mittelwertzeit = (werteins + wertzwei + wertdrei) / 3
 mittelwertzeitanzeige = Round(mittelwertzeit, 2)
 UserForm5.Label25 = mittelwertzeitanzeige
 
End Sub


Sub Signalausgabe()

UserForm5.Label23.BackColor = vbRed 'Visuelles Signal

startzeit = GetTime

If stopp = True Then

MsgBox "Frühstart", vbOKOnly + vbCritical, "Fehlermeldung"


End If

End Sub

  

Betrifft: AW: Stoppuhr von: fcs
Geschrieben am: 05.11.2014 08:36:23

Hallo Stefan,

für eine konkrete Hilfe wäre es hilfreich, wenn du eine ggf. abgespeckte/anonyymisierte Version deiner Datei hier hochladen würdest. So kann man auch mal ein wenig testen, um das Problem zu analysieren.
Nur mit dem Code kann man wenig anfangen.

Gruß
Franz