# VBA: KeyAscii?



## MBolle (18. Januar 2007)

Hallo,

ich habe folgende Sub Prozedur in Excel (VBA) geschrieben:

Private Sub txt_neuer_Zaehlerstand_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Select Case KeyAscii
Case Is = 13  'Enter Taste
Call speichern
Case Is = 27 'ESC-Taste
txt_neuer_Zaehlerstand.Value = ""
End Select

End Sub

Sinn der der Prozedur:
Ein Benutzer soll einen Wert in eine Textbox eingeben. Danach soll es Ihm möglich sein, über die Teste ESC die Eingabe zu lösche und über die Enter-Taste die Eingabe zu bestätigen (oder halt über einen Button 'speichern').

Problem: Wenn man die Enter- oder auch die ESC-Taste betätigt, so wird die Prozedur nicht ausgeführt.

Wird allerdings eine andere Taste betätigt z. B. die Taste 'A' oder 'y' so wird die Prozedur ausgelöst. Natürlich ohne ein Ergebnis, da weder der Wert 27 noch der Wert 13 erzielt wird.

Kann es sein, dass VBA die nichtdruckbaren Zeichen nicht erkennt?

Könnt Ihr mir helfen?


----------



## WaGutSo (19. Januar 2007)

Hallo MBolle,
doch, nichtdruckbare Zeichen werden erkannt. Es sind jedoch nicht alle Bestandteil des ANSI-Zeichensatzes. Das von Dir verwendete Ereignis ‚KeyPress’ verwendet den ANSI-Zeichensatz (siehe Online-Hilfe zu KeyPress).

Wenn Du das Ereignisse KeyDown verwendest müsste es klappen (siehe auch hier Online-Hilfe).

Beispiel:


```
Private Sub txt_neuer_Zaehlerstand_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  Select Case KeyCode
    Case 13 'Enter Taste
      MsgBox "KeyCode für Enter erkannt", , "KeyDown"
    Case 27 'ESC-Taste
      MsgBox "KeyCode für ESC erkannt", , "KeyDown"
    Case Else
      MsgBox "KeyCode: " & KeyCode, , "KeyDown"
  End Select
End Sub
```

Übrigen das „Is = „ gehört nicht zu Case.

Viel Erfolg
Walter Gutermann


----------

