Hi,
mit der Funktion Jahreszahl wird in der cbo nach Eingabe des 2. Punktes (hinter dem Monat) die Jahreszahlt, z.Zt. 2010, ergänzt und gebläut. Ich möchte nun durch Eingabe von „+“ oder „-“ in der Combobox die Jahreszahl um jeweils 1 Jahr vor- oder zurückschalten. Wie könnte das funktionieren?
Dank u. Gruß
Wilhelm
Private Sub cbo_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Set ctr = cbo '***Ergänzt die Jahreszahl nach dem 2. Pkt. im Datum***
Jahreszahl KeyAscii
End Sub
'…
Public Function Jahreszahl(ByVal KeyAscii As MSForms.ReturnInteger)
'*** Ergänzt die Jahreszahl ohne besondere Prüfung
'Funktionsaufruf:
'Set ctr = cboAnnahmefrist '***Ergänzt die Jahreszahl nach dem 2. Pkt. im Da-tum***
'Jahreszahl KeyAscii
Dim a As Date '***Für die Berechnung, ob Eingabetag und -Monat vor oder nach dem aktuellen Datum liegen***
Dim b As Date '***Für die Berechnung, ob Eingabetag und -Monat vor oder nach dem aktuellen Datum liegen***
Dim adat
Dim idat
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, ctr.Text, „.“) 'Wenn bereits 1 Punkt vorhanden (Instr > 0)
Case Is > 0 'Mind. 1 Punkt vorhanden
If Right(ctr.Text, 4) = CStr(Year(Now)) Then 'Wenn Jahr schon steht
KeyAscii = 0 'keinen Punkt zulassen
ElseIf Right(ctr.Text, 1) = „.“ Then 'Wenn letzter Punkt vorhanden
KeyAscii = 0 'keinen Punkt mehr zulassen
ctr.Text = ctr.Text & Year(Now) 'und Jahr wieder hinschreiben
ctr.SelStart = Len(ctr.Text) - 4 'und Jahr selektieren
ctr.SelLength = Len(ctr.Text)
Else 'wenn Jahr nicht da steht und auch kein Punkt am Ende
adat = 1 'ein Punkt
For idat = 1 To Len(ctr.Text) 'prüfen, ob der 2. Punkt schon steht
If Mid(ctr.Text, idat, 1) = „.“ Then 'wenn ja
adat = adat + 1 'a um 1 erhöhen
If adat >= 2 Then
ctr.Text = ctr.Text & „.“ & Year(Now)
ctr.SelStart = Len(ctr.Text) - 4
ctr.SelLength = Len(ctr.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
Set ctr = Nothing '***Löscht den Inhalt der Objektvariablen***
End Function