1k Aufrufe
Gefragt in Windows 10 von pclaus Einsteiger_in (51 Punkte)
Ich erstelle ein kleines "Programm" im Excel mit VBA, das am Monitor ein Farbfeld generiert, dem auf der Tastatur ein zugeordnetes Zeichen entspricht, das möglichst schnell eingegeben werden soll.
Die Zeit vom Erscheinen des Farbfeldes bis zur Eingabe wird dabei gemessen. Dafür kann ich aber nicht das zusätzliche Drücken der Enter-Taste brauchen.
Die Lösung des Problems hab ich bisher auf 3 Ebenen gesucht, leider ohne Erfolg.
1) In den Optionen von Excel.
2) Auf der Tastatur selbst und
3) über Makros.
Hier müsste mein bestehendes Makro an einer bestimmten Stelle der Ausführung automatisch unterbrochen werden, um das Zeichen (ohne Entertaste) manuell eingeben zu können. Unmittelbar danach sollte das Makro (ohne manuelle Aktivierung) weiterlaufen, denn da wäre ja dann das Enter drinnen.
Die kurze Dauer der Makro-Ausführung wäre für die Zeitmessung vernachlässigbar, sodass nur die tatsächliche Zeit bis zur Eingabe des Zeichens gemessen würde.
Wichtig: Keine zeitabhängige Unterbrechung, denn dann würde entweder nichts gemessen (Zeit zu kurz) oder immer nur die Dauer der Unterbrechung (Zeit ausreichend oder zu lang).
Ich habe es schon mit If-Codes versucht, aber dann ging gar nix mehr.
Bitte um Eure Hilfe!
LG PClaus

24 Antworten

0 Punkte
Beantwortet von pclaus Einsteiger_in (51 Punkte)
Zu Frage1:
Weil der Code bei Eingabe und neuer Farbe auch das neue D5 nach E5 kopiert.
Zu Frage2:
Nein, nicht über Worksheet Change oder anderes.
Ich habe deinen Code wie er ist in mein Makro kopiert und nur die Buchstaben geändert.

Aber:!!
Dein Rat mit dem befehl Application.Calculate hat geholfen! Verstehen tu ichs leider nicht.
Wie du sagst: Damit stehen in D5 und E5 die gleichen Buchstaben drin. Und auch in D18 bzw. D19, wenn ich ihn richtig eingegeben habe. Das passt jetzt so!
Jetzt versuche ich, deine Vorschläge zur Zeitauswertung umzusetzen.
Ach ja, noch was: Wie kann ich erkennen, dass das Makro beendet ist ohne Eingabe, die nichts mehr bringt?

Danke! LG PClaus
0 Punkte
Beantwortet von
OK ich verstehe,

durch den Tastendruck läuft das Makro ja weiter geht in die nächste Runde, generiert einen neuen Buchstaben und hält erst dann wieder an. Das war ja eigentlich der Sinn der Sache. Wie würdest du dir denn eine zusätzliche Unterbrechung vor der Wiederholung zwecks Auswertung vorstellen? Möglichkeiten gäbe es da schon. z.B. eine zeitlich begrenzte Wartedauer (etwa 2 sek) zur visuellen Prüfung der Eingabe? Das würde z.B. mit [i]Application.Wait Now + TimeValue("0:00:02")[/i] gehen.

[quote]Ach ja, noch was: Wie kann ich erkennen, dass das Makro beendet ist ohne Eingabe, die nichts mehr bringt?[/quote]
Du könntest eine Information ausgeben. Vor der End-Zeile müsste dann etwas stehen wie Msgbox "Glückwunsch, Sie haben es geschafft"

Gruß Mr. K.
0 Punkte
Beantwortet von pclaus Einsteiger_in (51 Punkte)
Hallo xlKing!
Alles passt!
Danke!!!
Jetzt spiel ich mich noch mit der Auswertung.
Darf ich mich wieder melden, wenn ich ansteh?
Danke und LG PClaus
0 Punkte
Beantwortet von
Wie, wenn du anstehst? Klar, kannst dich jederzeit melden. Nur weil
ich hier aus persönlichen Gründen, eine Nachtschicht einlege, musst
du das nicht auch machen. Ich kann halt nur tagsüber nicht allzuviel
machen. Man muss ja auch seine Brötchen verdienen. Jetzt aber
erstmal gute Nacht :-)
...