Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro- Datum ohne Punkt bei Eingabe konvertieren

Makro- Datum ohne Punkt bei Eingabe konvertieren
14.11.2005 19:31:14
Zucker
Hallo,
ich suche ein Makro, dass aus 141105 -> 14.11.2005 macht.
Meine erste Versuche waren nicht erfolgreich. Funktioniert nur, wenn Spalte A als Text formatiert ist und dann kann ich das Datum auch nicht mehr korrigieren, weil immer größerer in Spalte A Unsinn entsteht.
Ich denke mal, dass das Problem schon mehrfach gelöst wurde.
Hat jemand eine funktionierende Lösung?
Hier mein Versuch:

Private Sub Worksheet_Change(ByVal Target As Range)
' Spalte A ist als Text formartiert
Dim s%, m%, s1%
Dim x1 As String
Dim x, dat, dat1 As Date
y = Year(Date)  ' Vergleichsjahr
festlegen
z = 1           ' Indikator
'Soll nur bei einer Eingabe in Spalte A wirksam werden:
If Target.Column <> 1 Then Exit Sub
With Target
If .Value = "" Then Exit Sub
If IsNumeric(.Value) And InStr(.Value, ":") = 0 And InStr(.Value, ",") = 0 Then
If Len(.Value) = 6 Then
s = Mid(.Value, 1, 2)
m = Mid(.Value, 3, 2)
s1 = Mid(.Value, 5, 2)
z = 1
End If
If z = 1 Then
dat = CDate(s & "." & m & "." & s1)
If IsDate(dat) Then
y1 = Year(dat)
If y1 < (y + 1) Then ' Eingegebenes Datum nach oben begrenzen
.Value = dat
.NumberFormat = "dd.mm.yyyy"
Else
MsgBox "Jahreszahl passt nicht!"
.Value = Clear
Exit Sub
End If
End If
End If
End If
End With
End Sub

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro- Datum ohne Punkt bei Eingabe konvertieren
14.11.2005 19:34:18
Hajo_Zi
Hallo Hans Bärbel,
schaue mal auf meine Homepage da ist ein Beispiel auf der Seite VBA.
Link zur Datei


Anzeige
AW: Makro- Datum ohne Punkt bei Eingabe konvertieren
14.11.2005 19:57:12
Peter
Das löst mein Probelm leider nicht. So weit war ich auch schon.
Wenn ich versuche ein Datum zu ändern, dann entstehen bei deiner Lösung auch nur unbrauchbare Ergebnisse. Sorry, ist aber so.
Hat jemand eine funktionierende Lösung, die auch das Ändern einer Datum-Eingabe berücksichtigt?
Gruß
Peter
Anzeige
AW: Makro- Datum ohne Punkt bei Eingabe konvertieren
14.11.2005 20:19:12
Hajo_Zi
Hallo Peter,
Ich habe den Code geändert.
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
'* H. Ziplies                                     *
'* 26.04.03; 14.11.05                             *
'* erstellt von Hajo.Ziplies@web.de               *
'* <a href="http://home.media-n.de/ziplies/">http://home.media-n.de/ziplies/</a> *
'   Datum umwandeln von 010205 in 01.02.05
Dim RaBereich As Range, RaZelle As Range
' Bereich der Wirksamkeit
Set RaBereich = Range("B3:C20,D3:D7")
'   noch mehr Bereiche
'    Set RaBereich = Union(Range("C7:I26"), Range("L7:R26"), Range("U7:AA26"), Range("AD7:AJ26"))
'   ab Vesion XP braucht der Schutz nicht aufgehoben werden
'   Formatierung bei Schutz kann über Dialog Schutz eingestellt werden
'    ActiveSheet.Unprotect ("Passwort")
For Each RaZelle In Range(Target.Address)
If Not Intersect(RaZelle, RaBereich) Is Nothing And _
(Len(RaZelle.Value2) = 6 Or Len(RaZelle.Value2) = 5) And IsNumeric(RaZelle.Value2) Then
Application.EnableEvents = False
If Len(RaZelle.Value2) = 6 Then
RaZelle.Value = CDate(Mid(RaZelle.Value2, 1, 2) & "." & Mid(RaZelle.Value2, 3, 2) & "." _
& Mid(RaZelle.Value2, 5, 2))
Else
RaZelle.Value = CDate(Mid(RaZelle.Value2, 1, 1) & "." & Mid(RaZelle.Value2, 2, 2) & "." _
& Mid(RaZelle.Value2, 4, 2))
End If
RaZelle.NumberFormat = "dd/mm/yy;@"
Application.EnableEvents = True
Else
RaZelle.NumberFormat = "0"
End If
Next RaZelle
Application.EnableEvents = True
'    ActiveSheet.protect ("Passwort")
Set RaBereich = Nothing
End Sub

Gruß Hajo
Anzeige
AW: Makro- Datum ohne Punkt bei Eingabe konvertieren
14.11.2005 20:52:13
Peter
Jawoll, du hast es drauf, so gehts.
Danke.
Gruß
Peter
AW: Makro- Datum ohne Punkt bei Eingabe konvertieren
14.11.2005 20:55:49
Hajo_Zi
Hallo Peter,
Danke für die Testung. Jeder Testet den Code anders. Ich habe die Datei schon getestet und meine Redakteurin auch und uns beiden ist der Fehler nicht aufgefallen.
Gruß Hajo
Anzeige
AW: Makro- Datum ohne Punkt bei Eingabe konvertieren
15.11.2005 17:16:26
Peter
Hallo Hajo,
eine Macke hat das Makro noch:
Es zerstört die Formatierung von Nachbarzellen.
Gibt in A 10 200,00 € ein. und versuche die Eingabe auf 300,00 € zu ändern.
Es ist dann Text.
Ich habe mir
if target.colunm = 2 then
beholfen, damit nicht nicht alle Spalten durch das Marko behandelt werden.
Gruß
Peter
Anzeige
AW: Makro- Datum ohne Punkt bei Eingabe konvertieren
15.11.2005 18:19:57
Hajo_Zi
Hallo Peter,
wenn ich das richtig in Erinnerung habe ging es bei deem Makro um eine Datumsumwandlung. Ich habe in A10 100 € eingegeben und es geändert in 200 € es wurde der numerische Wert angezeigt.
Mein Makro wirkt nicht auf der gesamten Tabelle
' Bereich der Wirksamkeit
Set RaBereich = Range("B3:C20,D3:D7")
Gruß Hajo
Anzeige
AW: Makro- Datum ohne Punkt bei Eingabe konvertieren
15.11.2005 22:09:02
Peter
Hallo Hajo,
nun ja, außerhalb des gelb markierten Bereichs, werden Datumeingaben und Währungsformate in einfache Zahlen ( doch nicht Text) umgewandelt. Ich habe die Range nicht manipuliert.
Ist vielleicht nur bei mir so.
Wenn du es noch mal getestet hat, wird es in Ordnung sein.
Sollte nur ein Hinweis sein.
Gruß
Peter
Anzeige
AW: Makro- Datum ohne Punkt bei Eingabe konvertieren
16.11.2005 05:54:06
Hajo_Zi
Hallo Peter
"außerhalb des gelb markierten Bereichs, werden Datumeingaben und Währungsformate in einfache Zahlen ( doch nicht Text) umgewandelt. Ich habe die Range nicht manipuliert."
das ist die Routine von Excel. Außerhalb des Bereiches macht der VBA Code nichts.
Gruß Hajo
Anzeige
AW: Makro- Datum ohne Punkt bei Eingabe konvertieren
14.11.2005 19:57:01
Ewald
Hallo Zucker,
als Ansatz, in einer TexBox funktionierrt es so.

Private Sub TextBox5_Change()
TextBox5.SetFocus 'Datum suchen/ersetzen
Dim Txt$
Txt = TextBox5.Text
If Txt = "" Then Exit Sub
If IsNumeric(Txt) = False Then GoTo ErrorHandler
If Len(Txt) = 6 Then
Txt = Left(Txt, 2) & "." & Mid(Txt, 3, 2) _
& "." & Right(Txt, 2)
If Not IsDate(Txt) Then
GoTo ErrorHandler
Else
TextBox5.Text = Txt
Exit Sub
End If
End If
Exit Sub
ErrorHandler:
Beep
MsgBox "Kein Datum!"
TextBox5.Text = ""
End Sub

Grüße
Ewald
Anzeige
AW: Makro- Datum ohne Punkt bei Eingabe konvertieren
14.11.2005 20:06:53
Peter
Hallo Ewald,
mit VBS kenne ich mich gut aus. Mit Excel-Objekten aber nicht.
Ds Ganze muss sich direkt in den Zellen abspielen.
Wenn ich den Target-Wert verfolge, dann ist er beim 1. Konvertieren vom Typ Text und beim 2. Konvertieren vom Typ Datum.
Und genau hier liegt das Problem, für das ich keine Lösung habe.
Gruß
Peter
Anzeige
AW: Makro- Datum ohne Punkt bei Eingabe konvertieren
14.11.2005 20:26:26
Ewald
Hallo Peter,
nach einer Recherche, leider nur für die Zeit
was gefunden, aber vielleicht als Ansatz?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim s%, m%
'Soll nur bei einer Eingabe in Spalte A wirksam werden:
If Target.Column <> 1 Then Exit Sub
With Cells(Target.Row, Target.Column)
If .Value = "" Then Exit Sub
If IsNumeric(.Value) And InStr(.Value, ":") = 0 And _
InStr(.Value, ",") = 0 Then
.NumberFormat = "[hh]:mm"
If Len(.Value) > 2 Then
s = Left(.Value, Len(.Value) - 2)
m = Right(.Value, 2)
Else
s = .Value
m = 0
End If
.Value = s & ":" & m
End If
End With
End Sub

Grüße
Ewald
Anzeige
AW: Makro- Datum ohne Punkt bei Eingabe konvertieren
14.11.2005 20:56:24
Peter
Hallo Ewald,
das Makro kannte ich schon und war Vorlage für meinen 1. Versuch.
Trotzdem danke. Problem ist zwischenzeitlich im Forum gelöst worden.
Gruß
Peter

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Makro zur Umwandlung von Datumseingaben ohne Punkt


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle ein neues Arbeitsblatt oder öffne ein bestehendes.

  2. Drücke Alt + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (dein Arbeitsmappename)".
    • Wähle "Einfügen" und dann "Modul".
  4. Kopiere den folgenden VBA-Code in das Modul:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim s%, m%, s1%
       If Target.Column <> 1 Then Exit Sub
       With Target
           If .Value = "" Then Exit Sub
           If IsNumeric(.Value) Then
               If Len(.Value) = 6 Then
                   s = Mid(.Value, 1, 2)
                   m = Mid(.Value, 3, 2)
                   s1 = Mid(.Value, 5, 2)
                   .Value = CDate(s & "." & m & "." & s1)
                   .NumberFormat = "dd.mm.yyyy"
               End If
           End If
       End With
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Teste die Eingabe: Gib ein Datum im Format TTMMJJ in Spalte A ein, z.B. 141105 für den 14.11.2005.


Häufige Fehler und Lösungen

  • Problem: Eingabe wird nicht korrekt umgewandelt.

    • Lösung: Stelle sicher, dass die Spalte A als Text formatiert ist, bevor du das Datum eingibst.
  • Problem: Das Makro funktioniert nicht bei Änderungen der bestehenden Daten.

    • Lösung: Der Code muss die Bedingungen für die Änderung anpassen. Achte darauf, dass die Länge des Wertes entsprechend geprüft wird.

Alternative Methoden

Eine alternative Methode zur Eingabe eines Datums ohne Punkte wäre die Verwendung von Textboxen oder Formularen. Hier ein Beispiel:

Private Sub TextBox1_Change()
    Dim Txt$
    Txt = TextBox1.Text
    If Len(Txt) = 6 Then
        Txt = Left(Txt, 2) & "." & Mid(Txt, 3, 2) & "." & Right(Txt, 2)
        TextBox1.Text = Txt
    End If
End Sub

Mit dieser Methode kannst du das Datum in einer Eingabemaske formatieren, bevor es in eine Zelle geschrieben wird.


Praktische Beispiele

  1. Beispiel 1: Du gibst 010205 in Zelle A1 ein. Das Makro wandelt es in 01.02.2005 um.
  2. Beispiel 2: Bei der Eingabe von 250322 wird das Datum in 25.03.2022 umgewandelt.

Diese Beispiele zeigen, wie du die Excel-Datumseingabe ohne Punkte optimieren kannst.


Tipps für Profis

  • Verwende Bedingte Formatierungen, um sicherzustellen, dass nur gültige Datumswerte in den Eingabezellen stehen.
  • Überlege, Datenüberprüfung zu verwenden, um die Eingabe auf das gewünschte Format zu beschränken.
  • Halte dein Makro sauber und dokumentiert, um zukünftige Anpassungen zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich ein Datum in Excel ohne Punkt eingeben? Du kannst das oben beschriebene Makro verwenden, um dein Datum direkt im gewünschten Format einzugeben.

2. Was tun, wenn das Datum nicht korrekt umgewandelt wird? Überprüfe, ob die Zelle als Text formatiert ist und dass die Eingabe korrekt ist (6 Ziffern für TTMMJJ).

3. Funktioniert das Makro in allen Excel-Versionen? Ja, das Makro sollte in den meisten Excel-Versionen ab Excel 2003 funktionieren, solange VBA unterstützt wird.

4. Wie kann ich das Datum in ein anderes Format umwandeln? Ändere die Zeile .NumberFormat = "dd.mm.yyyy" im Code zu dem gewünschten Datumsformat.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige