Excel Datum einfrieren VBA?

2 Antworten

Ganz verstehe ich Dein Problem mit der AW von Subopt nicht, aber vllt hilft dir eine dieser dieser Infos weiter:

  • um vom Target Bn nach Fn zu kommen , einfach Range("F"&Target.row) = Date
  • Um ganz allgemein vier Spalten nach rechts zu kommen: Target oder Activecell.offset(0, 4) = date 
  • Um in die erste freie Zelle von F zu kommen (also fürs Anfertigen einer Liste: Range("F65000").end(xlup).offset(1, 0) = date 
  • und wenn Du eine Liste aller bisherigen Datumseinträge in Fn erstellen willst, ohne dass alte überschrieben werden, dann zB Target.offset(0, 4).value = date & ".." & Target.offset(0, 4).value (vermutlich braucht es das .value gar nicht) (hier wird das letzte Datum zuvorderst geschrieben, umgekehrt ginge es analog). Könnte sein, dass das die Datumszahl schreibt, ggf auf das Format(date;"dd.MM.YY") zurückgreifen beim Neueintrag.

Du siehst, wieviele Verstehensmöglichkeiten sich aus Deiner Frage immer noch ergeben, obwohl sie klar formuliert scheint!

Du fängst das falsche Ereignis ab. Anstelle des Öffnen-Ereignisses müsstest du das OnChange-Ereignis des Worksheets abfangen. Dann prüfst du, ob in Spalte B eine Änderung passiert ist, falls ja liest du die Zeile von Target aus, sicherst den Wert aus Spalte F irgendwo hin und schreibst in der Zeile in Spalte F das aktuelle Datum.

Woher ich das weiß:Berufserfahrung – Programmierer

AndyH135 
Beitragsersteller
 23.04.2018, 16:44

Habe das Bearbeiten mehrerer Zeilen bereits abgefangen:

Private Sub Worksheet_Change(ByVal Target As Range)

  If Intersect(Target, Range("B4:B1024")) Is Nothing Then Exit Sub

  If Target.Count > 1 Then Exit Sub

  If Target = "" Then

    Target.Offset(0, 4).ClearContents

    Else:

    Target.Offset(0, 4) = CDate(Format(Now, "dd.mm.yyyy"))

  End If

End Sub

0
Suboptimierer  23.04.2018, 16:48
@AndyH135

Sieht doch gut aus. Du willst nur noch den alten Wert gesichert haben, wenn ich dich richtig verstanden habe. Dann schreibst du den alten Wert einfach in eine andere Spalte der Zeile oder auf ein verstecktes Tabellenblatt. Das Coole an Excel ist ja, dass man Daten von einfacher Struktur nicht extern auslagern muss.

0
AndyH135 
Beitragsersteller
 23.04.2018, 16:52
@Suboptimierer

Ich verstehe die Logik im Moment nicht. Meinst du eine Art Zwischenspeicher oder wie? Kannst du es mir bitte zeigen?

0
Suboptimierer  23.04.2018, 22:05
@AndyH135

So zum Beispiel:

  For i = 5 To 32000
    If Target.Offset(0, i).Value = "" Then
      Target.Offset(0, i).Value = Target.Offset(0, 4).Value
      Exit For
    End If
  Next
0
Oubyi, UserMod Light  24.04.2018, 12:58
@AndyH135

Ich frage mich auch, was an Deinem Code nicht stimmen soll. Was soll denn noch passieren, oder anders?

P.S.:
 If Target.Count > 1 Then Exit Sub
brauchst Du beim Change-Ereignis nicht, nur bei SelectionChange.

0