Excel: Automatisch Datum einfügen bei Schreiben in eine Zeile?
Hallo, ich sage mal ich habe viele Zeilen und sobald in eine Zeile schreibe gibt es eine Datumsspalte in die automatisch an dem Tag wo ich eine Eintragung mache das Datum eingetragen wird. Jemand eine Idee wie das funktioniert?
1 Antwort
nur mit Makro worksheet_change....
Du musst das aber noch etwas konkreter Formulieren: Welche Zellen sollen überwacht werden, wirklich alle?? Wo soll das Datum eingetragen werden, denn zumindest diese Spalte muss man ausschließen, sonst gibt es eine Endlosschleife (Zeile geändert -> Makro startet und trägt Datum ein -> das ist wiederum eine Änderung, Makro läuft wieder und so endlos weiter....)
Datum nur eintragen, wenn etwas erstmals gefüllt wird oder auch bei einer Änderung einer bereits gefüllten Zelle?
wenn das Datum in Spalte A soll:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Or Cells(Target.Row, 1) <> "" Then Exit Sub
Cells(Target.Row, 1).Value = Date
End Sub
worksheet_change fängt das Event ab, dass eine Änderung vorgenommen wird. Sobald Du also was in die Tabelle schreibst, wird das Makro gestartet. In zwei Fällen soll nichts passieren: Wenn in Spalte A ein Eintrag erfolgt (das führt sonst zu einer Endlosschleife, da ja durch das Eintragen des Datums auch eine Änderung und damit das Makro ausgelöst wird) und wenn schon was drin steht. Das letzte kannst Du auch löschen, dann wird bei Aktualisierierung auch das Datum gesetzt.
Target ist die bearbeitete Zelle (oder Bereich). Target.row die Zeile
cells(target.row,1) ist die Angabe in VBA: erst Zeile, dann Spalte. Also Zeile der bearbeiteten Zelle und Spalte A - dort wird das Datum gesetzt. Wenn es inkl. Uhrzeit sein soll, statt date now eintragen.
Das Makro im VBA Editor (Entwicklerwerkzeuge) zum Tabellenblatt hinterlegen, dass überwacht werden soll.
Wenn Du das Datum nicht in Spalte A haben willst, kannst Du die drei Stellen mit der 1 durch eine andere Spalte (nummerisch!) ersetzen.
Ok das hört sich kompliziert an... hast du vielleicht eine einfache einführung in VBA für mich? Also nochmal zum deutlicherem Verständnis: Wir haben z.b. eine Spalte Einkaufspreis und eine Spalte Verkaufspreis und wenn man jeweils was dort einträgt soll es eine Spalte mit dem Einkaufsdatum und dem Verkaufsdatum geben.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Cells(Target.Row, 9) = "" Then Cells(Target.Row, 9).Value = Date
If Target.Column = 4 And Cells(Target.Row, 10) = "" Then Cells(Target.Row, 10).Value = Date
End Sub
es wird ein Datum gesetzt, wenn die Änderung in Spalte 3 (=C) erfolgt und in der zugehörigen Zeile in Spalte I noch nichts steht.
Gleiches für D und J
Es passiert irgendwie nichts... laut einem Youtubevideo habe ich es wie folgt gemacht. Visual Basic geöffnet und dann ein neues Modul erstellt und dann dort reinkopiert... muss ich das Worksheet_Change in meine Excelliste umbennen? Also das habe ich gemacht und es ist auch nichts passiert. Was mache ich falsch?
Du könntest in einer Spalte die Differenz mit einer normalen Formel berechnen:
=wenn(anzahl2(i2:j2)=2;j2-i2;"")
Entsprechend in der Spalte runterziehen.
Das gleiche kann man auch ins Makro einbauen:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Cells(Target.Row, 9) = "" Then Cells(Target.Row, 9).Value = Date
If Target.Column = 4 And Cells(Target.Row, 10) = "" Then Cells(Target.Row, 10).Value = Date
If WorksheetFunction.CountA(Range(Cells(Target.Row, 9), Cells(Target.Row, 10))) = 2 Then Cells(Target.Row, 11).Value = Cells(Target.Row, 10).Value - Cells(Target.Row, 9).Value
End Sub
Ok wie geht das? Also ich habe quasi eine Tabelle und ich schreibe immer unten was neues dran, demnach würde dann in der nächsten Zeile wieder das Datum reinkommen. Wie krieg ich das hin? Grundlegende Programmierkenntnisse habe ich, nur nicht mit Excel.