Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1008to1012
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
Inhaltsverzeichnis

Datum generieren

Datum generieren
08.09.2008 14:37:00
André
Hallo Forumteilnehmer,
ich möchte in meinem Tabellenblatt bzw. Arbeitsmappe in der Spalte L eine Änderung vornehmen, wobei dann in der Spalte M dann in der gleichen Zeile das Datum erscheint an dem Tag eine Änderung vorgenommen wurde.
Ich habe hier ein Beispiel:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 12 Then
Target.Offset(0, 1) = Date
End If
End Sub


Allerdings funktioniert es nicht wirklich. Habe auch noch diesen Code im Tabellenblatt stehen...
Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
'   Datum umwandeln von 010205 in 01.02.05
Dim RaBereich As Range, RaZelle As Range
Set RaBereich = Range("A5:A26,A34:A55,A64:A85,A94:A115,A124:A145,A154:A175,A184:A205,A214:   _
_
_
_
A235,A244:A265,A274:A295,A304:A328,C5:C26,c34:c55,c64:c85,c94:c115,c124:c145,c154:c175,c184: _
c205,c214:c235,c244:c265,c274:c295,c304:c328") 'Bereich der Wirksamkeit
'   sollten noch mehr Bereiche benötigt werden
'    Set RaBereich = Union(Range("C7:I26"), Range("L7:R26"), Range("U7:AA26"), Range("AD7:AJ26") _
_
_
_
)
'    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/ mmm.;@"
Application.EnableEvents = True
Else
RaZelle.NumberFormat = "0"
End If
Next RaZelle
Application.EnableEvents = True
If Target.Column = 4 Then
Target.Offset(0, -2) = Date
End If
'    ActiveSheet.protect ("Passwort")
Set RaBereich = Nothing
End Sub


Würde mich sehr über Unterstützung freuen.
Gruß
André

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum generieren
08.09.2008 14:45:17
Chris
Servus,
so müsste das hinhauen:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 12 Then
Target.Offset(0, 1) = Date
Exit sub
End If
'   Datum umwandeln von 010205 in 01.02.05
Dim RaBereich As Range, RaZelle As Range
Set RaBereich = Range("A5:A26,A34:A55,A64:A85,A94:A115,A124:A145,A154:A175,A184:A205,A214:   _
_
_
_
_
A235,A244:A265,A274:A295,A304:A328,C5:C26,c34:c55,c64:c85,c94:c115,c124:c145,c154:c175,c184: _
c205,c214:c235,c244:c265,c274:c295,c304:c328") 'Bereich der Wirksamkeit
'   sollten noch mehr Bereiche benötigt werden
'    Set RaBereich = Union(Range("C7:I26"), Range("L7:R26"), Range("U7:AA26"), Range("AD7:AJ26") _
_
_
_
_
)
'    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/ mmm.;@"
Application.EnableEvents = True
Else
RaZelle.NumberFormat = "0"
End If
Next RaZelle
Application.EnableEvents = True
If Target.Column = 4 Then
Target.Offset(0, -2) = Date
End If
'    ActiveSheet.protect ("Passwort")
Set RaBereich = Nothing
End Sub


Es kann nur 1 Change_Ereignis in einem Sheet vorhanden sein:
Gruß
Chris

Anzeige
AW: Datum generieren
08.09.2008 17:05:32
André
Vielen Dank für die schnelle Antwort, habe jetzt im nachhinein bemerkt, dass die Formatierung des Datums nicht wirklich hinhaut. Obwohl ich die Zellen entsprechnend formatiert habe, wird die Formatierung wieder zurückgesetzt.
Kann man in den Code die Formatierung mit hineinsetzen? Habe nochmal einen Auszug des Code unten angefügt:
If Target.Column = 9 Then
Target.Offset(0, 4) = Date
Gruß
André
Target.Offset(0, 4) = Format(Date, "DD.MM.YYYY")
08.09.2008 19:15:00
Andre´
AW: Datum generieren
09.09.2008 09:19:41
André
Funktioniert ja super. Vielen Dank für die Hilfestellung!
Ist es auch möglich wenn in einer Zelle beispielsweise in der Spalte 10 nichts steht, auch kein Datum geschrieben wird? Beispiel: Der Wert in "J4" wird gelöscht. Ergebnis: Excel schreibt mir kein Änderungsdatum sondern ein leeres Feld.
Hier mein VBA Code:
If Target.Column = 10 Then
Target.Offset(0, 4) = Format(Date, "DD. MMM. YY")
Exit Sub
End If
Gruß
André
Anzeige
AW: Datum generieren
09.09.2008 12:42:24
Andre´
Hallo Namensvetter,
probier dies einzubauen:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rg As Range
On Error GoTo ERRORHANDLER
Application.EnableEvents = False
For Each rg In Target
If Cells(rg.Row, 10) = "" Then
Cells(rg.Row, 14) = ""
End If
If Cells(rg.Row, 10) > "" Then
Cells(rg.Row, 14) = Format(Date, "DD. MMM. YY")
End If
Next rg
ERRORHANDLER:
Application.EnableEvents = True
End Sub


MFG Andre

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige