Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1704to1708
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

Erneute Abfrage nicht mit Klick -> mit Entertaste

Erneute Abfrage nicht mit Klick -> mit Entertaste
28.07.2019 16:12:29
Peter
Hallo zusammen
Im Netz habe ich das untenstehende Script gefunden. Dieses ermöglicht eine Wörterabfrage (Deutsch-Englisch-Deutsch) gemäss Liste. Es wird jeweils von der Liste ein Wort abgefragt, das via MsgBox zu beantworten ist. Das Problem, resp. ziemlich mühsame dabei ist, dass man jedes Mal den Button erneut anklicken muss, damit eine erneute Abfrage gestartet wird.
Wäre es stattdessen möglich mit Drücken der Entertaste die nächste Abfrage zu starten und mit der Esc-Taste das Script, den Abfrageprozess final zu beenden?
Dieser Wunsch scheint mir etwas kompliziert zu sein, jedoch hat vielleicht jemand eine gute Idee, es sind viele Vokabeln zu büffeln, damit soll es ein wenig einfacher gehen.
Private Sub CommandButton1_Click()
Dim spalte As Integer
Dim a As Long
Dim b As Long
Dim zeile As Integer
Dim Antwort As String
b = 0
spalte = Int(Rnd() * 2) + 1
a = Int(Rnd() * Application.WorksheetFunction.Sum(Range("C:C"))) + 1
For zeile = 2 To Range("C65536").End(xlUp).Row
b = b + Cells(zeile, 3).Value
If b >= a Then Exit For
Next zeile
Antwort = InputBox("Bitte die Übersetzung von" & Chr(10) & Cells(zeile, spalte) & Chr(10) &  _
_
"eingeben:")
Select Case spalte
Case 1
If Antwort = Cells(zeile, 2).Value Then
MsgBox "richtig"
If Cells(zeile, 3).Value > 1 Then Cells(zeile, 3).Value = Cells(zeile, 3).Value - 1
Else
MsgBox "Falsch" & Chr(10) & "Die richtige Antwort lautet:" & Chr(10) & Cells(zeile, 2) _
_
.Value
If Cells(zeile, 3).Value  1 Then Cells(zeile, 3).Value = Cells(zeile, 3).Value - 1
Else
MsgBox "Falsch" & Chr(10) & "Die richtige Antwort lautet:" & Chr(10) & Cells(zeile, 1) _
_
.Value
If Cells(zeile, 3).Value 
Vielen Dank für Eure Hilfe
Viele Grüsse,
Peter

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Erneute Abfrage nicht mit Klick -> mit Entertaste
28.07.2019 16:55:42
robert
Wo ist der Unterschied? Drücken musst Du so oder so !
AW: Erneute Abfrage nicht mit Klick -> mit Entertaste
28.07.2019 16:59:34
Peter
Hallo Robert
Nein nicht wirklich, mit dem Buttonklick muss ich die Hand auf die Maus wechseln, mit der Entertaste muss ich die Hand nicht von der Tastatur nehmen, das geht viel schneller und ist ein grosser Unterschied.
Viele Grüsse,
Peter
AW: Erneute Abfrage nicht mit Klick -> mit Entertaste
28.07.2019 17:05:54
Nepumuk
Hallo Peter,
in das Modul der Tabelle:
Private Sub CommandButton1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    CommandButton1.Value = KeyCode = vbKeyReturn
End Sub

Gruß
Nepumuk
Anzeige
AW: Erneute Abfrage nicht mit Klick -> mit Entertaste
28.07.2019 17:30:07
Peter
Hallo Nepumuk
Danke für die Antwort, jedoch funktioniert es nicht.
Ich habe Dein Script in das Tabellenmodul eingefügt, es funktioniert jedoch nicht.
Die MsgBox fragt ein Wort ab, z.B. "bitte die Übersetzung von - Faserstoff - eingeben. Dann muss ich im Eingabefeld der MsgBox die richtige Übersetzung eintippen, in diesem Beispiel - pulp -. Die MsgBox gibt dann an, ob die Eingabe richtig oder falsch war, diese Mitteilung muss dann mit klicken auf den OK Buttons oder mit Drücken der Entertaste abgeschlossen werden. Damit verschwindet die MsgBox und es muss mit der Maus erneut der CommandButton1 angeklickt werden, damit eine neue Abfrage gestartet wird.
Vielleicht müsste eine Lösung bei den "Abschluss-Mitteilung" anknüpfen (MsgBox "richtig" oder MsgBox "Falsch, die richtige Antwort lautet:"etc.?
Viele Grüsse,
Peter
Anzeige
AW: Erneute Abfrage nicht mit Klick -> mit Entertaste
28.07.2019 17:57:14
Nepumuk
Hallo Peter,
Ich hab das Event nochmal ändern müssen auf Key_Down weil es sonst schon nach dem bestätigen der MsgBox gefeuert hat aber ansonsten funktioniert es. Die TakeFocusOnClick-Eigenschaft des Button muss aber auf True gestellt sein. Das ist der Default Wert, wenn du den nicht verstellt hast, dann sollte der eingestellt sein.
Versuch es mal mit meiner Testmappe:
https://www.herber.de/bbs/user/131132.xlsm
Gruß
Nepumuk
AW: Erneute Abfrage nicht mit Klick -> mit Entertaste
28.07.2019 18:47:12
Peter
Hallo Nepumuk
Funktioniert nun bestens, echt super, vielen Dank.
Viele Grüsse,
Peter
Anzeige
AW: Erneute Abfrage nicht mit Klick -> mit Entertaste
28.07.2019 18:05:44
Peter
Hallo Nepumuk
Wenn ich "Option Explicit" eingebe, dann wird beim Debuggen die Fehlermeldung "Fehler beim Kompilieren: Variable nicht definiert" angezeigt und im Script wird "CommandButton1" von Deinen Script markiert. Aber der CommandButton1 ist vorhanden und die Prozedur dahinter funktioniert auch so wie es soll. Deaktiviere ich Dein Script (mit Hochkomma), dann kommt auch keine Fehlermeldung.
Private Sub CommandButton1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) _
CommandButton1.Value = KeyCode = vbKeyReturn
End Sub
Viele Grüsse,
Peter
Anzeige
AW: Erneute Abfrage nicht mit Klick -> mit Entertaste
28.07.2019 18:42:43
Nepumuk
Hallo Peter,
kann ich nicht nachvollziehen. Funktioniert meine Mappe bei dir?
Lade mal deine hoch.
Gruß
Nepumuk
AW: Erneute Abfrage nicht mit Klick -> mit Entertaste
28.07.2019 19:08:56
onur
Steht das Buchstabe für Buchstabe so in deinem Code? (2x CommandButton1) oder hast du den Button umbenannt?
Private Sub CommandButton1_KeyUp(ByVal usw usw)
CommandButton1.Value = KeyCode = vbKeyReturn
End Sub

AW: Erneute Abfrage nicht mit Klick -> mit Entertaste
28.07.2019 19:23:23
Daniel
Hi
im Prinzip so:
die neuen Zeilen stehen ganz links
Private Sub CommandButton1_Click()
Dim spalte As Integer
Dim a As Long
Dim b As Long
Dim zeile As Integer
Dim Antwort As String
Do
b = 0
spalte = Int(Rnd() * 2) + 1
a = Int(Rnd() * Application.WorksheetFunction.Sum(Range("C:C"))) + 1
For zeile = 2 To Range("C65536").End(xlUp).Row
b = b + Cells(zeile, 3).Value
If b >= a Then Exit For
Next zeile
Antwort = InputBox("Bitte die Übersetzung von" & Chr(10) & Cells(zeile, spalte) _
& Chr(10) & "eingeben:")
If Antwort = "" Then Exit Do
Select Case spalte
Case 1
If Antwort = Cells(zeile, 2).Value Then
MsgBox "richtig"
If Cells(zeile, 3).Value > 1 Then Cells(zeile, 3).Value = Cells(zeile, 3).Value - 1
Else
MsgBox "Falsch" & Chr(10) & "Die richtige Antwort ist:" _
& Chr(10) & Cells(zeile, 2).Value
If Cells(zeile, 3).Value  1 Then Cells(zeile, 3).Value = Cells(zeile, 3).Value - 1
Else
MsgBox "Falsch" & Chr(10) & "Die richtige Antwort ist:" _
& Chr(10) & Cells(zeile, 1).Value
If Cells(zeile, 3).Value 
das Spiel muss einmal mit dem Button gestartet werden.
danach wird die Abfrage solange wiederholt, wie du eine Antwort eingibst.
lässt du die Inputbox leer oder klickst abbrechen, wird die Schleife beendet.
Gruß Daniel
Anzeige
AW: Erneute Abfrage nicht mit Klick -> mit Entertaste
28.07.2019 19:32:34
Peter
Hallo Daniel
Funktioniert noch einen Tick besser, vielen Dank, eine echte Erleichterung!
Jetzt kann ich Wörter lernen bis zu Umfallen :-)
Viele Grüsse,
Peter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige