Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Makro bei bestimmter Taste (Enter) ausführen





Frage

Hallo alle zusammen, ich möchte aus einem Listenfeld (MS Access 2000) heraus ein Makro ausführen lassen, wenn die Enter-Taste (oder Leertaste) gedrückt wird. Jetzt habe ich im Eigenschaftenfenster der Liste unter der Registerkarte Ereignis das Makro bei "Bei Taste" eingetragen. Schön und gut, das Makro wird bei der Enter-Taste ausgeführt - aber auch bei Betätigung jedes Buchstabens. Die Buchstaben benötige ich aber zum Suchen/Springen innerhalb der Liste. Wie kann ich Abhilfe schaffen, so dass das Makro nur bei der Enter oder Leertaste gestartet wird? Danke für schnelle Antworten...

Antwort 1 von erik

Dein Ansatz ist gar nicht so verkehrt. Dir fehlt nur noch eine Bedingung, die feststellt, ob die Enter und/oder die Leertaste gedrückt wurde. Erst wenn diese Bedingung wahr ist, darf der dazugehörige Code ausgeführt werden.

Beispiel 1:

Private Sub xxx_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Or KeyAscii = vbKeySpace Then
MsgBox "Hier Code ausführen für Return- und Leertaste.", vbInformation
End If
End Sub


Beispiel 2:
Private Sub xxx_KeyPress(KeyAscii As Integer)
       If KeyAscii = vbKeyReturn Then
 MsgBox "Hier Code ausführen für Returntaste.", vbInformation
 ElseIf KeyAscii = vbKeySpace Then
 MsgBox "Hier Code ausführen für Leertaste.", vbInformation
 End If
End Sub


Antwort 2 von hazet

Hi Erik,

zunächst mal Danke für die Antwort.

Das Problem, welches ich noch habe, ist, dass ich keinerlei VBA-Kenntnisse habe, sondern alles über die Eigenschaftenfenster der einzelnen Steuerelemente sowie über Makros erstelle.

Kannst Du mir also auch sagen, wo ich diesen VBA-Code eintragen muss, bzw. geht das auch als Makrobedingung? Wenn nicht, wo muss mein Makroname einsetzen bzw. was bedeutet ...MsgBox "Hier Code ausführen für Returntaste"....

Danke für eine weitere Antwort
Pascal

Antwort 3 von erik

In dem Ereignis musst du zunächst den Namen deines Makros durch "[Ereignisprozedur]" ersetzen. Das findest du in derselben Liste, wo du auch deinen bisherigen Makronamen gefunden hast. Klicke anschließend auf die rechts liegende, kleine Schaltfläche "...", womit du ein Visual Basic-Fenster erhältst, in dem der Cursor bereits im richtigen Prozedurrumpf blinkt.

Nun musst du dich für eins der beiden Beispiel in Antwort 1 entscheiden. Nr. 1 führt dein Makro aus wenn die Eingabetaste ODER Leertaste gedrückt werden. Bei Nr. 2 gibt es dazu noch eine Unterscheidung zwischen Eingabetaste und Leertaste.

Kopiere vom jeweiligen Beispiel alles ab "If KeyAscii..." bis zum "End If" alles in den leeren Prozedurrumpf. Da du offensichtlich bereits über Makros verfügst, kannst du sie direkt aufrufen, indem du die Zeilen mit "MsgBox" ersetzt durch folgenden Aufruf:

DoCmd.RunMacro "<Hier Name deines Makros einfügen>"

Am Ende sollte es dann so aussehen:

Private Sub xxx_KeyPress(KeyAscii As Integer) 
If KeyAscii = vbKeyReturn Or KeyAscii = vbKeySpace Then 
DoCmd.RunMacro "<Hier Name deines Makros einfügen>"
End If 
End Sub 


Die MsgBox-Zeilen bringen nur eine Meldung auf den Bildschirm, eben eine Message Box. Sie sollten nur Platzhalter sein für Einfügungen, die du hättest vornehmen müssen. Mittlerweile brauchst du die Meldungen nicht mehr, da an deren Stelle die RunMacro-Anweisung getreten ist.

Antwort 4 von hazet

Super, hat geklappt!!!

Vielen Dank erstmal!

Habe bestimmt noch andere Fragen in naher Zukunft...

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: