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
Hallo,
ich habe ein sehr ähnliches Problem (vermute ich zumindest - ich schaffe es leider nicht den Code selber anzupassen
):
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