Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1184to1188
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
Datumeingabe ohne Punkte
Frank
Hallo,
ich wollte bei der Datumseingabe in eine Zelle auf die Punkte verzichten. Also die Zelle ist als Datum formatiert tt.mm.jjjj
Nun wollte ich lediglich z.B. 091110 eingeben und nach Enter soll 09.11.2010 in der Zelle stehen um halt schneller Datumse einzugeben. Kann mir da jemand helfen, bitte? Danke!

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Ohne Berechnung : "00-00-00"
09.11.2010 17:02:06
NoNet
Hallo Frank,
falls Du mit den "Datumsangaben"weiterrechnen möchtest (Fristen, Arbeitstage, Datumsdifferenzen etc.), dann lässt sich das nur per Makro lösen.
Wenn es rein um die optische Anzeige geht, dann formatiere die Zellen mit folgendem Typ : 00-00-00
Allerdings würde ich davon eher abraten, da es sich dabei nur um "optische Datumsangaben" handelt, defakto jedoch um 6-stellige Zahlen !!
Die Eingabe 091110 würde dann zwar als 09-11-10 angezeigt werden, es handelt sich jedoch nach wie vor um die Zahl 91.110 !!
Es erfolgt auch keine Gültigkeitsprüfung, ob das scheinbare "Datum" existiert, eine Eingabe 290210 oder 541709 würde also als 29-02-10 bzw. 54-17-09 angezeigt, was offensichtlich keine Datumsangaben sind !!
Gruß, NoNet
Anzeige
AW: Datumeingabe ohne Punkte
09.11.2010 17:02:35
Frank
Habs schon gefunden:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim a, t As Integer, m As Integer, j As Integer
On Error GoTo fehlerbehandlung
a = Target.Value2
If (IsNumeric(a) = False) And (IsDate(a) = False) Then Exit Sub
If (Mid$(a, 5, 4)  999999) Then Exit Sub
a = Format(CStr(a), "000000")
t = Mid$(a, 1, 2)
m = Mid$(a, 3, 2)
j = Mid$(a, 5, 4)
a = DateSerial(j, m, t)
Application.EnableEvents = False
Target.Value = a
Target.NumberFormat = "dd.mm.yyyy"
fehlerbehandlung:
Application.EnableEvents = True
End Sub

Anzeige
AW: Datumeingabe ohne Punkte
09.11.2010 17:03:43
Frank
Habs schon gefunden ;)

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim a, t As Integer, m As Integer, j As Integer
On Error GoTo fehlerbehandlung
a = Target.Value2
If (IsNumeric(a) = False) And (IsDate(a) = False) Then Exit Sub
If (Mid$(a, 5, 4)  999999) Then Exit Sub
a = Format(CStr(a), "000000")
t = Mid$(a, 1, 2)
m = Mid$(a, 3, 2)
j = Mid$(a, 5, 4)
a = DateSerial(j, m, t)
Application.EnableEvents = False
Target.Value = a
Target.NumberFormat = "dd.mm.yyyy"
fehlerbehandlung:
Application.EnableEvents = True
End Sub

Anzeige
AW: Datumeingabe ohne Punkte
09.11.2010 17:30:50
Franz
Franz grüßt Frank!
Ist die Frage wirklich noch offen oder gelöst? Etwas unklar ist das schon.
Habe nämlich auch eine SelectionChange Lösung parat zum anpassen in deinem Code.
Tschüss!
Franz D.
...und ich 'ne udF-Lösung, die ganz ohne...
09.11.2010 17:41:57
Luc:-?
…Anpassung immer fktt…
Ist sogar schon seit Juni im Archiv! Sucht mal… ;-)
Gruß Luc :-?
AW: ...und ich 'ne udF-Lösung, die ganz ohne...
09.11.2010 18:06:36
Frank
ein weiterer Tip wär ok :)
AW: Datumeingabe ohne Punkte
09.11.2010 18:04:10
Frank
:) hm, naja, ich probier noch rum. Wenn ich das o.g. hier
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
reinbaue, dann zerschießen mir ein paar andere Sachen, da beim öffnen der Datei zunächst ein paar aktualisierte Zellen kopiert und woanders hingeschrieben werden.
Ich versuche das gerade mal nur in dem jeweilige sheet zu verwenden, aber bringt mich auch nich so ganz weiter.
Im Endeffekt sollen eigentlich alle Zellen der Arbeitsmappe, die als Datum formatiert sind ohne Punkte das korrekte Datum dann übernehmen ohne das andere Abläufe behindert werden ...
Anzeige
AW: Datumeingabe ohne Punkte
09.11.2010 17:37:51
michael
Hi Frank
habs so gelöst
Benutzer def----TT.MM.JJJJ------statt Punkt hab ich die Taste Divid. auf der Zahlentastt.verwendet.
lg michael
AW: Datumeingabe 00:00:00
09.11.2010 18:49:13
Franz
Hi Frank,
das Essen war gut. Jetzt meine Lösung die du noch anpassen must je nach Spalte(n).
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vWert As String
Dim h As Integer, m As Integer, s As Integer, nozero As Integer
'Eingabe-Beispiel: 062345 oder 62345, es folgt als Timerwert: 06:23:45
'2.Beispiel: 34 ergibt als Timerwert: 00:00:34
'If Target.Column  6 Then Exit Sub 'Syntax-Beispiel gelassen
If IsEmpty(Target) Or Selection.Cells.Count > 1 Then Exit Sub
On Error GoTo ERRORHANDLER  'man weiss ja nie!
Select Case Target.Column
Case 5, 7, 9, 11, 13, 15, 17, 19, 21, 23 'Spalten mit Timern
Target.NumberFormat = "hh:mm:ss"
'falls die Formatierung verloren ging. Eine Eingabe "25%" verfälscht die Kontrolle
vWert = Target.Value
If Not IsNumeric(vWert) Then
Target.ClearContents
Target.Select  'mag nicht jeder aber es bringt den Cursor zurück auf die zu prü _
fende Zelle
Exit Sub 'besser
End If
If InStr(Target.Value, ",") Then
Target.ClearContents
Target.Select
Exit Sub
End If
Select Case Len(vWert)
Case 1: vWert = "00:00:0" & vWert
Case 2: vWert = "00:00:" & vWert
Case 3: vWert = "00:0" & Left(vWert, 1) & ":" & Right(vWert, 2)
Case 4: vWert = "00:" & Left(vWert, 2) & ":" & Right(vWert, 2)
Case 5: vWert = "0" & Left(vWert, 1) & ":" & Mid(vWert, 2, 2) & ":" & Right( _
vWert, 2)
Case 6: vWert = Left(vWert, 2) & ":" & Mid(vWert, 3, 2) & ":" & Right(vWert, 2)
Case Is > 6
Target.ClearContents
Target.Select
Exit Sub
End Select
h = Left(vWert, 2):   m = Mid(vWert, 4, 2):   s = Right(vWert, 2)
If h  24 Then
Target.ClearContents
Target.Select
Exit Sub
End If
If m  60 Then
Target.ClearContents
Target.Select
Exit Sub
End If
If s  60 Then
Target.ClearContents
Target.Select
Exit Sub
End If
nozero = h + m + s
If nozero = 0 Then
Target.ClearContents
Target.Select
Exit Sub
End If
Application.EnableEvents = False
Target.Value = vWert
Application.EnableEvents = True
Case 1, 2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22    'Spalte mit Text
'hier ohne Korrektur-Massnahmen
End Select
Exit Sub
ERRORHANDLER:
ActiveCell.ClearContents
Application.EnableEvents = True
End Sub

Tschüss!
Franz D.
Anzeige
AW: Datumeingabe 00:00:00
09.11.2010 19:02:55
Frank
Hi Franz :)
klappt prima, also mit "time" ... werde mir das umbauen für "date" :)
Gruß Frank

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige