VBA: Jahreszahl erg., KeyPress ok-Call NN nicht

Guten Morgen,

mit dem nachfolgenden Code wird in einer Textbox bei der Eingabe eines Datums die Jahreszahl automatisch ergänzt, das funktioniert mit dem KeyPress-Ereignis wunderbar:

Option Explicit
Public adat
Public idat
Public ctr As Control

Private Sub cbo1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Set ctr = cbo1
'Call JahrszahlErgänzen
Rem *** Datum mit Autoergänzung der Jahreszahl (beim Kopieren die cbo ensprechend ä n d e r n!***
Select Case KeyAscii 'Übergebener Asciicode
Case 8, 48 To 57 'Backtaste, Tasten 0 bis 9

KeyAscii = KeyAscii 'Alles klar

Case 46 'Taste Punkt
adat = 0
Select Case InStr(1, cbo1.Text, „.“) 'Wenn bereits 1 Punkt vorhanden (Instr > 0)
Case Is > 0 'Mind. 1 Punkt vorhanden
If Right(cbo1.Text, 4) = CStr(Year(Now)) Then 'Wenn Jahr schon steht
KeyAscii = 0 'keinen Punkt zulassen
ElseIf Right(cbo1.Text, 1) = „.“ Then 'Wenn letzter Punkt vorhanden
KeyAscii = 0 'keinen Punkt mehr zulassen
cbo1.Text = cbo1.Text & Year(Now) 'und Jahr wieder hinschreiben
cbo1.SelStart = Len(cbo1.Text) - 4 'und Jahr selektieren
cbo1.SelLength = Len(cbo1.Text)
Else 'wenn Jahr nicht da steht und auch kein Punkt am Ende
adat = 1 'ein Punkt
For idat = 1 To Len(cbo1.Text) 'prüfen, ob der 2. Punkt schon steht
If Mid(cbo1.Text, idat, 1) = „.“ Then 'wenn ja
adat = adat + 1 'a um 1 erhöhen
If adat >= 2 Then
cbo1.Text = cbo1.Text & „.“ & Year(Now)
cbo1.SelStart = Len(cbo1.Text) - 4
cbo1.SelLength = Len(cbo1.Text)
KeyAscii = 0
Exit For
End If
End If
Next idat
End If
End Select

Case Else 'Alle anderen Tasten
KeyAscii = 0 'werden nicht zugelassen

End Select
End Sub

Wenn ich den Code, den ich für etliche Textboxen benötige, in eine Sub JahreszahlErgänzen auslagere und dann mit Keypress-Ereignis in einer Textbox aufrufe, erscheint eine Fehlermeldung, dass die Variable KeyAscii nicht definiert sei. Was muss ich ändern, um den Code in der Sub zum Laufen zu bringen?
THX
Wilhelm

Hallo Wilhelm,

Wenn ich den Code, den ich für etliche Textboxen benötige, in
eine Sub JahreszahlErgänzen auslagere und dann mit
Keypress-Ereignis in einer Textbox aufrufe, erscheint eine
Fehlermeldung, dass die Variable KeyAscii nicht definiert sei.
Was muss ich ändern, um den Code in der Sub zum Laufen zu
bringen?

Du mußt den Wert von Keyascii mit übergeben. Beispielprogramm …

Private Sub Command1\_KeyPress(KeyAscii As Integer)
 Anzeige KeyAscii
End Sub

Private Sub Anzeige(ByVal Taste As Integer)
 Label1.Caption = Taste
End Sub

Gruß, Rainer