Hallo liebe Mitglieder,
bin neu hier und habe schon in anderen Foren gesucht.
Ich suche einen VBA-Kode, mit dem ich bei Eintrag in einer Spalte in der betreffenden Zeile das aktuelle Datum speichern kann.
Wenn der Eintrag in der Spalte gelöscht wird, soll auch das Datum wieder gelöscht werden.
Kann mir da jemand helfen?
Vielen Dank schon einmal
Excelbeginner
Hallo,
ich verwende dafür i.d.R. den folgende VBA-Code:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Quelle: Ransi
If Intersect(Target, Range("A1:A10")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub 'Bearbeiten mehrerer Zeilen wird abgefangen
If Target = "" Then
Target.Offset(0, 1).ClearContents
Else:
Target.Offset(0, 1) = CDate(Format(Now, "dd.mm.yyyy"))
End If
End Sub
Wenn im Bereich von A1 bis A10 (das muss im Code angepasst werden) etwas eingetragen wird dann erscheint in der Spalte B das entsprechende Datum. Wird der Wert in A1 gelöscht wird auch das Datum gelöscht.
Der Code muss in das Modul des entsprechenden Tabellenblattes:
- mit Alt+F11 den VBA-Editor öffnen
- mit Strg+R den Projekt-Explorer öffnen und aktivieren
- die gewünschte Datei per Doppelklick markieren
- auf das gewünschte Tabellenblatt unterhalb dieser Datei doppelklicken
- in der rechten Fensterhälfte ist das Codefenster dieser Tabelle sichtbar
- dort den Code einfügen
- speichern und den VBA-Editor mit Alt+F4 schliessen
Hilft dir das weiter?
Hallo Peter,
sorry für die Verspätung. Ich war einen Tag nicht da.
Ich habe mir aus verschiedenen Vorschlägen Folgendes zuammengebastelt, weiß aber nicht, wo der Unterschied zu Deiner Lösung ist:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Column
Case 11 To 11: Cells(Target.Row, 1) = Date
If Target = "" Then
Cells(Target.Row, 1).ClearContents
Else:
Target.Offset(0, -10) = Date
End If
End Select
End Sub
Das funktioniert ganz gut, allerdings habe ich festgestellt, dass ein Fehler auftritt, wenn ich mehrere Zellen gleichzeitig bearbeite.
Dafür ist wohl Dein
Code:
If Target.Count > 1 Then Exit Sub 'Bearbeiten mehrerer Zeilen wird abgefangen
Das habe ich jetzt eingearbeitet und es funktioniert prima. Vielen Dank!
Was muss ich im Kode ändern, damit das Ganze erst ab Zeile 8 stattfindet?
Wofür ist
Code:
If Intersect(Target, Range("A1:A10")) Is Nothing Then Exit Sub
Viele Grüße und besten Dank! :15:
Excelbginner
Hallo,
Code:
If Intersect(Target, Range("A1:A10")) Is Nothing Then Exit Sub
hier gibst du den Bereich an der überprüft werden soll (in diesem Fall A1 bis A10)
Hallo,
Dein Code ist nicht stimmig.
Diese Zeilen werden nie ausgeführt:
Code:
If Target = "" Then
Cells(Target.Row, 1).ClearContents
Else:
Target.Offset(0, -10) = Date
End If
Da Du vorher grundsätzlich das Datum reinschreibst.
Für Dein Vorhaben reicht das hier:
PHP-Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 7 And Target.Column = 11 Then
If Target.Text = "" Then
Cells(Target.Row, 1).ClearContents
Else
Cells(Target.Row, 1) = Date
End If
End If
End Sub
So kommt es zu keinem Fehler, wenn mehrere Zellen ausgewählt werden.
Aber es wird in diesem Fall immer auf Änderungen der obersten Zelle reagiert.
Hallo Atilla,
das rockt, vielen Dank! :15:
Bist Du in ganz anderen Foren auch unter dem Nickname unterwegs?
Viele Grüße
Excelbeginner
(22.02.2015, 21:28)Excelbeginner schrieb: [ -> ]Bist Du in ganz anderen Foren auch unter dem Nickname unterwegs?
Ich bin zwar auch in anderen Excel Foren angemeldet, aber in denen bin ich selten unterwegs und teilweise auch unter einem anderen Nick.
Aber wenn ein Atilla Dir in anderen foren positiv aufgefallen ist, dann kannst du denken, ich wäre es.
Ansonsten ist das bestimmt ein anderer Atilla
Hallo Atilla,
war ein ganz anderes Forum und hatte nchts mit Excel zu tun. Ich habe dort mal einen Atilla um eine Information gebeten, und siehe da, er kaum aus dem Nachbarort.
Viele Grüße
Excelbeginner