Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Aktuelles Datum speichern und auch löschen können
#1
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
Antworten Top
#2
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?
Gruß
Peter
Antworten Top
#3
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
Antworten Top
#4
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)
Gruß
Peter
[-] Folgende(r) 1 Nutzer sagt Danke an Peter für diesen Beitrag:
  • Excelbeginner
Antworten Top
#5
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 And Target.Column 11 Then
     
If Target.Text "" Then
         Cells
(Target.Row1).ClearContents
    Else
         Cells
(Target.Row1) = 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.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • Excelbeginner
Antworten Top
#6
Hallo Atilla,

das rockt, vielen Dank! :15:

Bist Du in ganz anderen Foren auch unter dem Nickname unterwegs?

Viele Grüße
Excelbeginner
Antworten Top
#7
(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 Wink
Gruß Atilla
Antworten Top
#8
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste