EXCEL VBA: Zeitstempel automatisch setzen sobald Zelle nicht leer?
Hallo,
ich suche nun schon länger eine Lösung für mein Problem und komme im Moment nicht so recht weiter weil mir VBA irgendwo anscheinend meine Formel abbricht - keine ahnung, bin ja auch blutiger Anfänger.
Versuche nun schon seit Stunden es hinzubekommen, dass in jeder Zeile von Spalte A ein Zeitstempel gesetzt wird, wenn in Spalte B ein Wert (egal ob text oder Zeit) gesetzt ist.
Den Zeitstempel schaff ich schon zu setzen - aber noch nicht mit der Bedingung dass er automatisch gesetzt werden soll wenn jemand in Spalte B was eintippt. Möchte also auch vermeiden, dass jemand mit einen Buttonklick oder dem Aufrufen des Makros dieses erst starten muss um den Zeitstempel zu setzen. <br>
Mein Code bisher:
Sub ZeitstempelMakro()
If Not IsEmpty("B:B) then
Columns("A:A").Select
Selection.Find(What:="").Activate
ActiveCell.FormulaR1C1 = Format(Now, "dd.mm.yyyy hh:mm:ss")
End If
End Sub
Vielleicht kann mir jemand helfen und mir den kleinen Logikfehler finden helfen
danke!
2 Antworten
Du solltest dafür das Change-Ereignis des Tabellenblatts verwenden.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B:B")) Is Nothing Then _
Target.Offset(0, -1).Value = Now
End Sub
Das Format würde ich über das Zellformat festlegen (Strg+1).
Häufiger Fehler bei Events ist, dass sie nicht am Objekt abgefangen werden, an dem sie auftreten.
Du musst den Code im Projektexplorer unter dein Tabellenblatt kopieren.
Einfach einmal oben bei Debuggen den ersten Eintrag Kompilieren... anklicken. ggf ist irgenwo anders ein problem in einer Prozedur oder Funktion, so dass das VBA Modul nicht sauber läuft
Es hat sich inzwischen geklärt, warum der Code nicht ausgeführt wird - meine Firma hat die Ausführung von automatischen Makros komplett gesperrt - DANKE also für die Hilfe :)
im Privaten Netz funktioniert der Code super!
Danke für den Tipp - scheint jedcoh wirklich irgendwo ein Problem in der Prozedur bzw der Funktion zu sein, da nach wie vor überhaupt nichts passiert. Ich erhalte auch keine Fehlermeldung oder sonst etwas, weswegen ich fast denke, dass die erste Zeile das Problem darstellt - keine Ahnung, wo ich hier den Fehler beheben kann
Danke für die schnelle Antwort - nachdem einfach gar nichts passiert, sobald ich diesen Code verwende, glaube ich langsam dass mein PC ein Problem mit den Befehlen (ByVal Target As Range) hat.. weil mir wird auch keine Message Box ausgegeben, wenn ich eine einfüge um zu sehen ob alles durchläuft.. irgendwo bricht der code anscheinend ab :-/