verkürzte Datumseingabe
#1
Es gibt doch die verkürzte Datumseingabe: TT.MM ergibt das entsprechende Datum mit der Ergänzung des aktuellen Jahres.
Ich muss sehr häufig Daten eingeben und würde gern ein VBA-Makro erstellen, das folgendes tut:
  • erkennen, ob das aktuelle Feld eine Datumsformatierung hat
  • wenn ja, dann erkennen, welches der letzte Tag des aktuellen Monats ist
  • wenn die eingegebene Zahl eine ganze Zahl und kleiner oder gleich dem letzten Tag ist
  • dann ergänze die Eingabe um den aktuellen Monat und das aktuelle Jahr
hat jemand sowas schon mal gemacht?
das ganze soll dann in einem seection_change-Makro laufen und mir ermöglichen, mit der Eingabe von maximal 2 Ziffern eine Datumseingabe zu machen
die Schritte 2-4 krieg ich wahrscheinlich alleine hin, aber wie löse ich die Erkennung der Feldformatierung?
Antworten Top
#2
(31.12.2024, 09:21)HelCor schrieb: die Schritte 2-4 krieg ich wahrscheinlich alleine hin, aber wie löse ich die Erkennung der Feldformatierung?

Wenn es nur um den ersten Schritt geht
Code:
    Debug.Print ActiveCell.NumberFormat
    If ActiveCell.NumberFormat Like "*d*" Or ActiveCell.NumberFormat Like "*m*" Then
     '....
    End If
Antworten Top
#3
Hallo,

da das nicht ganz trivial ist, wenn die Zelle schon als Datum formatiert ist, mal mein Vorschlag:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  With Target.Cells(1)
    If .NumberFormat Like "*d*" Or .NumberFormat Like "*m*" Then
      'MsgBox .Value
      If IsDate(.Value) Then
        On Error Resume Next
        Application.EnableEvents = False
        .Value = DateSerial(Year(Date), Month(Date), Day(.Value) - (Year(.Value) = 1900))
        Application.EnableEvents = True
        On Error GoTo 0
      End If
    End If
  End With
End Sub

Gruß, Uwe
Antworten Top
#4
Moin und frohes Neues!
(31.12.2024, 09:21)HelCor schrieb: Es gibt doch die verkürzte Datumseingabe: TT.MM ergibt das entsprechende Datum mit der Ergänzung des aktuellen Jahres.
Ich muss sehr häufig Daten eingeben
Gerade wenn Du häufig Daten eingeben musst …
… solltest Du dafür den Ziffernblock nutzen!
Excel kennt als Datumstrennzeichen außer dem (umständlichen) Punkt auch die auf dem Ziffernblock vorhandenen Zeichen - und /
Hierbei nutzt Du die Dateneingabe T-M[-JJ]
[-JJ] bedeutet, dass das Jahr optional ist.
Fehlt es, wird das aktuelle Jahr genommen.
Das Datumsformat wird natürlich vor der Eingabe vergeben!

Morgen ist dann 2-1 oder 2/1
Der letzte Valentinstag war 14-2-24
Gerade, wenn man viele Daten einhämmert, geht dies extrem schnell von der Hand.

Wer lieber + nutzen möchte (weil die Taste größer ist) kann auch ++ nehmen und dies mittels Autokorrektur durch ein einzelnes - oder / ersetzen.
2++1 ergibt dann 02.01.2025

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste