Clever-Excel-Forum

Normale Version: VBA - Datum automatisch einfügen / aktualisieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ich würde gerne ein Makro schreiben, welches sich automatisch aktiviert.
Habe dazu auch bereits Beispiele gefunden jedoch keine passende Umsetzung für meinen Fall.

Das Makro soll in dem Worksheet überwachen, ob sich in dem Bereich D2:E1000 etwas ändert.
Wenn dort eine Änderung durch eine Useraktivität (zb. User gibt einen Wert ein) stattfand, dann soll er F & Row der geänderten Zelle das heutige Datum automatisch eintragen, falls ein Datum vorhanden ist, soll es aktualisiert werden.

Beispiel:
User gibt einen Wert in E345 ein. Dann soll das Marko ausgeführt werden und in F345 das aktuelle Datum schreiben.

LG
Korain
Hallo,

versuche es mal mit diesem Makro im Modul des Tabellenblattes, auf dem es wirken soll:

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim isect As Range
    Set isect = Application.Intersect(Target, Range("D2:E1000"))
    If Not isect Is Nothing Then Cells(Target.Row, 6) = CDate(VBA.Date)
End Sub
(09.12.2021, 17:18)Klaus-Dieter schrieb: [ -> ]Hallo,

versuche es mal mit diesem Makro im Modul des Tabellenblattes, auf dem es wirken soll:

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim isect As Range
    Set isect = Application.Intersect(Target, Range("D2:E1000"))
    If Not isect Is Nothing Then Cells(Target.Row, 6) = CDate(VBA.Date)
End Sub

Hallo Klaus-Dieter,
damit klappt's perfekt! 

Ich danke dir vielmals.

LG
Korain
Hallo,

ich habe ein sehr ähnliches Problem (vermute ich zumindest - ich schaffe es leider nicht den Code selber anzupassen Huh ):

Ich möchte, dass wenn in den Feldern H8:AP8 ein Wert eingegeben wird, im entsprechenden Feld darunter (Zeile 9) das Datum zum Tag des Eintrags automatisch erscheint.


Erschwerend kommt noch hinzu, dass ich das Makro noch auf weitere Zeilen übertragen will (Evtl. geht das "einfach" mit Copy+Paste?):
H10:AP10 Wert eingegeben -> im Feld darunter (Zeile 11) das Datum zum Tag des Eintrags erscheint
H12:AP12 Wert eingegeben -> im Feld darunter (Zeile 13) das Datum zum Tag des Eintrags erscheint
...
H76:AP76 Wert eingegeben -> im Feld darunter (Zeile 77) das Datum zum Tag des Eintrags erscheint

Beste Grüße
Markus
Moin!
Nur weil zwei das Gleiche tun, ist es nicht dasselbe!
Heißt, dass hier eine andere Anforderung vorliegt, die wenig mit der Threaderöffnung zu tun hat.
Normalerweise eröffnet man dann einen neuen Thread, aber … egal!

Prinzipiell ähnelt Dein Blatt eher einer Papiertabelle als einer gültigen Excel-Liste.
Du musst also nicht nur prüfen, ob sich das Target (die geänderte Zelle) im Bereich H8:AP76 befindet,
sondern auch prüfen, ob die Änderung in einer geraden Zeile erfolgt.
In Excel macht man die Prüfung mittels =REST(ZEILE(Zelle);2)=0
in VBA z.B. mittels If Target.Row Mod 2 = 0 Then

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("H8:AP76")) Is Nothing Then
  With Target
    If .CountLarge = 1 And .Row Mod 2 = 0 Then
      .Offset(1, 0) = Date
    End If
  End With
End If
End Sub

Gruß Ralf
Hallo Ralf,

vielen Dank für deine Antwort!
Tut mir leid, dass ich keinen neuen Thread aufgemacht habe.

Der Code funktioniert prima.

Vielen, vielen Dank! Du hast mir damit wirklich sehr geholfen.

Beste Grüße
Markus