Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1060to1064
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Datumseingaben vervollständigen
23.03.2009 14:15:07
Christof
Hallo liebe Forumsteilnehmer,
folgendes Problem beschäftigt mich schon seit einer Weile.. ich komm nicht mehr weiter:
ich möchte eine Zahl, welche in eine Textbox eingegeben wird (egal in welchem Format.. ) in ein gültiges Datum umwandeln.. (vervollständigt mit aktuellen Angaben des Programms.. also zB. aktueller Monat und Jahr wenn nur Tag eingegeben wird.)
Bsp:
Eingabe: 1 --> Ergebnis: 01.03.2009 (Die Daten für Monat und Jahr stammen dann aus einer Zelle im Arbeitsblatt)
die meisten Eingaben hab ich schon abgefangen.. leider gehen folgende Kombinationen noch nicht:
Eingabe: 01.03. bzw. 1.3. ' Der letzte Punkt in diesen Eingaben will nicht verarbeitet werden.. ohne den letzten Punkt akzeptiert Excel es gleich als Datum..
hier der Code aus meiner Funktion:

Function datumok(datumur As String) As String
Dim akdatum As String
akdatum = Sheets("Daten").Cells(50, 8).Value  'aktuelles Datum aus Programm abrufen
beginn:
If IsDate(datumur) Then
datumok = Format(datumur, "dd.mm.yyyy")  'wenn Datumseingabe von Excel verwertbar
Else   'wenn Datumseingabe vervollständigt werden muss
If datumur Like "##[.]" Or datumur Like "#[.]" Or datumur Like "#" Or datumur Like "##"  _
Then
datumur = datumur + "." + Format(akdatum, "mm.yyyy") 'wenn nur der Tag eingegeben wurde
GoTo beginn
ElseIf datumur Like "##[.]##[.]" Or datumur Like "#[.]##[.]" Or datumur Like "##[.]#[.]" Or  _
_
datumur Like "#[.]#[.]" Then
datumur = datumur + "." + Format(akdatum, "yyyy") 'wenn Tag und Monat eingegeben wurde
GoTo beginn
End If
End If
End Function


Die Eingabe des Punktes im "Like"-Vergleich hatte ich auch schon ohne Eckige Klammern versucht..
Aufruf der Funktion zum Testen mit: MsgBox (datumok(InputBox("Datum:"))).
Vielen Dank schonmal für Hilfe
Christof

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datumseingaben vervollständigen
23.03.2009 14:38:52
rene
Hallo,
Bin für VBA zu doof, aber

01.03. bzw. 1.3.

durch den letzten Punkt, interpretiert XL die Eingabe als Text!
Vieleicht hilft´s als Ansatz!
lg, rene

AW: Datumseingaben vervollständigen
23.03.2009 14:49:00
Christof
Danke Rene,
aber das Datum wird in meinem Fall durchgängig als String verarbeitet...
hat noch jemand einen Einfall wie ich diese Fälle verarbeiten kann? (Bzw. evtl gibt es eine einfachere Lösung als die "Like" -Prüfungen ?!) Offenbar vergleicht "Like" die Eingaben mit dem letzten Punkt nicht.
Danke
Christof
AW: Datumseingaben vervollständigen
23.03.2009 14:57:03
dirk
Hallo!
Da sollte mal Cdate() als funktion verwendet werden.
Gruss
Dirk aus Dubai
Anzeige
AW: Datumseingaben vervollständigen
23.03.2009 15:20:42
Christof
Danke Dirk,
aber auch das bringt mir nichts, weil die IsDate-Funktion mit einem string "gefüttert" werden kann (bzw. mit Variant) und alle anderen Vergleiche lassen sich besser mit einem String als mit einem Datumsformat behandeln. Des Weiteren will ich ja erstmal aus nicht-Datumstauglichen Zahlen ein Datum erstellen!...
Bitte weitere Vorschläge :-)
Christof
AW: Datumseingaben vervollständigen
23.03.2009 15:06:41
Tino
Hallo,
vielleicht geht es so?
Function datumok(datumur As String) As String
Dim akdatum As Date
akdatum = Sheets("Daten").Cells(50, 8)

    If IsNumeric(datumur) Then
     
        If datumur Like "*.*.*" Then
         datumok = Format(datumur, "dd.mm.yyyy")
        ElseIf datumur Like "*.*" Then
         datumok = Format(datumur & "." & Year(akdatum), "dd.mm.yyyy")
        ElseIf datumur Like "*" Then
         datumok = Format(datumur & "." & Month(akdatum) & "." & Year(akdatum), "dd.mm.yyyy")
        Else
         datumok = Format(akdatum, "dd.mm.yyyy")
        End If
    
    End If

End Function


Gruß Tino

Anzeige
AW: Datumseingaben vervollständigen
23.03.2009 15:27:06
Christof
Danke Tino,
deine Lösung nimmt zwar die Punkte an, aber leider ist das Ergebnis nicht zufriedenstellend..
wenn ich 1.1. eingebe (sollte normalerweise 01.01.2009 rauskommen..) ist das Ergebnis: 10.01.1900
Hat da noch jemand eine Idee?
Danke
Christof
AW: Datumseingaben vervollständigen
23.03.2009 15:35:23
Tino
Hallo,
stellen wir diese Möglichkeit noch dabei.
Function datumok(datumur As String) As String
Dim akdatum As Date
akdatum = Sheets("Daten").Cells(50, 8)

    If IsNumeric(datumur) Then
        
        If datumur Like "*.*." Then
         datumok = Format(datumur & Year(akdatum), "dd.mm.yyyy")
        ElseIf datumur Like "*.*.*" Then
         datumok = Format(datumur, "dd.mm.yyyy")
        ElseIf datumur Like "*.*" Then
         datumok = Format(datumur & "." & Year(akdatum), "dd.mm.yyyy")
        ElseIf datumur Like "?*" Then
         datumok = Format(datumur & "." & Month(akdatum) & "." & Year(akdatum), "dd.mm.yyyy")
        Else
         datumok = Format(akdatum, "dd.mm.yyyy")
        End If
    
    End If

End Function


Gruß Tino

Anzeige
AW: Datumseingaben vervollständigen
23.03.2009 15:42:26
dirk
Hallo!
Lass' das lieber und zwinge den Eingeber dazu, ein passendes Datum einzugeben, da sonst der interpretation Tuer und Tor geoeffnet ist.
Gruss
Dirk aus Dubai
AW: Was meinst du damit ?
23.03.2009 16:06:20
Christof
Hallo dirk,
was meinst du damit?..
Ich habe diese Eingabeart gewollt, da das in unserem Buchhaltungsprogramm genauso geht. Da müssen sich die User nicht umgewöhnen !!! Und jetzt funktioniert es ja dank Tino tadellos.
Gruß Christof
AW: Datumseingaben vervollständigen
23.03.2009 15:56:37
Christof
Vielen Dank Tino,
jetzt hab ich nach deinem Vorbild noch eine Zeile
ElseIf datumur Like "*." Then
datumok = Format(datumur & Month(akdatum) & "." & Year(akdatum), "dd.mm.yyyy")
gleich nach der ersten If-Abfrage eingefügt (für die "1." - Eingabe - kam auch ein Irres ergebnis raus :-)
Jetzt geht es mit allen erdenklichen Eingaben.... juchhuu, endlich ein Problem weniger :-)
Vielen Dank nochmal
Christof
Anzeige
prima oT.
23.03.2009 16:14:51
Tino

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige