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