Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
692to696
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
692to696
692to696
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
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

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


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
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
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
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
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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige