Hallo PClaus,
Um Reaktionstests durchzuführen gibt es sicherlich bessere Software als Excel. Aber natürlich das trotzdem möglich. Leider hast du keinen Code gepostet. Hast du den in einem UserForm oder in einem Standardmodul?
Also war ich mal so frei, selbst ein paar simple Zeilen runterzuklackern. Bei mir muss man lediglich A bei Rot, S bei Grün oder D bei Blau drücken. Dein Code ist dann sicher etwas umfangreicher.
Für dich ist v.a. der Teil mit KeyPressed interessant. Hier wird nämlich eine Windowsfunktion verwendet, die überprüft ob eine bestimmte Taste gedrückt wurde.
[code]Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer
Sub ReaktionMessen()
'Code zum Berechnen der Zufallsfarbe z.B.
Randomize Timer
FeldBreite = 50: Feldhoehe = 50 'Größe des Rechtecks
Messbereich = "A1:A20"
'Normale Tasteneingabe abschalten
Application.OnKey "a", ""
Application.OnKey "s", ""
Application.OnKey "d", ""
Range(Messbereich).ClearContents
For i = 1 To Range(Messbereich).Cells.Count '20 Durchläufe bis Ende
'Zufallsgenerator berechnet eine der drei Farben Rot, Grün oder Blau
Farbe = Choose(Int(Rnd * 3) + 1, RGB(255, 0, 0), RGB(0, 255, 0), RGB(0, 0, 255))
'Zufallsgenerator berechnet, wann innerhalb der nächsten 10 Sekunden das Feld kommt
Start = Timer + Rnd * 10
Do: Loop Until Timer >= Start
'Feld wird jetzt gezeichnet
FeldTop = Application.UsableHeight / 2 - Feldhoehe / 2
FeldLeft = Application.UsableWidth / 2 - FeldBreite / 2
Set shp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, FeldLeft, FeldTop, FeldBreite, Feldhoehe)
shp.Fill.ForeColor.RGB = Farbe
DoEvents
'Warten auf Tastendruck
Start = Timer
Do
Select Case Farbe
Case RGB(255, 0, 0)
KeyPressed = GetAsyncKeyState(vbKeyA)
Case RGB(0, 255, 0)
KeyPressed = GetAsyncKeyState(vbKeyS)
Case RGB(0, 0, 255)
KeyPressed = GetAsyncKeyState(vbKeyD)
End Select
Loop Until KeyPressed
Range(Messbereich).Cells(i) = Timer - Start
'Feld wird gelöscht
shp.Delete
DoEvents
Next i
'Normnale Tasteneingabe wieder einschalten
Application.OnKey "a"
Application.OnKey "s"
Application.OnKey "d"
MsgBox "Herzlichen Glückwunsch. Sie haben den Test erfolgreich beendet.", vbInformation, "Farbtest"
End Sub[/code]Ich liege im Durchschnitt übrigens zwischen 0,3 und 0,6 Sekunden. Ist das gut?
Gruß Mr. K.