Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Beim schreiben in Zelle Datum in andere Zelle setz

Forumthread: Beim schreiben in Zelle Datum in andere Zelle setz

Beim schreiben in Zelle Datum in andere Zelle setz
02.09.2006 22:37:22
Andreas
Hallo zusammen,
ich weiss mit =heute() kann ich das Datum setzen. Aber wie kann man es anstellen, dass wenn ich zum Beispiel in A1 etwas schreibe, erst dann das Datum in A8 gesetzt wird und dies immer wieder sobald sich ein Wert in der Zelle A1 ändert sprich am nächsten Tag Wertänderung in A1, dann neues Datum in A8.
WENN Funktion oder VBA? Danke für eure Tips
mfG
Andreas
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Beim schreiben in Zelle Datum in andere Zelle
02.09.2006 22:58:23
Josef
Hallo Andreas!
Das geht nur per VBA.
' **********************************************************************
' Modul: Tabelle3 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
  If Target <> "" Then
    Range("A8") = Date
  Else
    Range("A8") = ""
  End If
End If
End Sub


Gruß Sepp

Anzeige
AW: Beim schreiben in Zelle Datum in andere Zelle
02.09.2006 23:45:31
Andreas
Hallo Sepp,
oka das geht soweit. Ich dachte ich könnte das MAkro einfach erweitern wenn es in einer Range passieren muss, aber weit gefehlt.
Die zu prüfenden Zellen erstrecken sich von A12 bis A31, und die wo eingetragen werden soll von G12:G31. Wie kann ich ergänzen?
mfG
Andreas
Anzeige
AW: Beim schreiben in Zelle Datum in andere Zelle
03.09.2006 00:29:11
Matthias
Hallo Andreas,
z.B. so:

Private Sub Worksheet_Change(ByVal Target As Range)
Const Watch = "A12:A31"
Dim ber As Range, z As Range
Set ber = Intersect(Target, Range(Watch))
If Not ber Is Nothing Then
For Each z In ber
If z.Value <> "" Then z.Offset(0, 6) = Date
Next z
End If
End Sub

Nicht geklärt ist, wie du auf das Löschen von Zellinhalten reagieren willst. Hier im Code wird dann gar nix gemacht - nix eingetragen, nix gelöscht (in Spalte G).
Gruß Matthias
Anzeige
AW: Beim schreiben in Zelle Datum in andere Zelle
03.09.2006 00:43:57
Andreas
Hallo Matthias,
generell wird das Blatt definitiv beschrieben, bleib also nicht lange leer. Wenn dann doch einmal eine Zelle in dem A-Range leer bleiben sollte die schon beschrieben war, dann muss ich oder meine Frau es eben händisch löschen. Wenn man das natürlich in der Prozedur mit einbauen kann, wäre es wohl ein Zuckerl :-). Danke aber für die Lösungshilfe.
mfG
Andreas
PS: Habe versucht drauf zu kommen wo G definiert ist in dem Code, kann j aeigentlich nur die Sequenz If z.Value "" Then z.Offset(0, 6) = Date sein. Aber 6 Spalten gehen nur bis F. Wie wird das gezählt?
Anzeige
AW: Beim schreiben in Zelle Datum in andere Zelle
03.09.2006 01:16:07
Matthias
Hallo Andreas,
von A 6x nach rechts gibt G...

Private Sub Worksheet_Change(ByVal Target As Range)
Const Watch = "A12:A31"
Dim ber As Range, z As Range
Set ber = Intersect(Target, Range(Watch))
If Not ber Is Nothing Then
For Each z In ber
If z.Value <> "" Then
z.Offset(0, 6) = Date
Else
z.Offset(0, 6) = ""
End If
Next z
End If
End Sub

Gruß Matthias
Anzeige
AW: Beim schreiben in Zelle Datum in andere Zelle
03.09.2006 11:34:19
Andreas
Hallo Matthias,
es geht. Danke für die Ergänzung und Erklärung.
Gruß Andreas
AW: Beim schreiben in Zelle Datum in andere Zelle
03.09.2006 08:50:39
Josef
Hallo Andreas!
Dann so.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
On Error GoTo ErrExit
If Not Intersect(Target, Range("A12:A31")) Is Nothing Then
  Application.EnableEvents = False
  If Target.Count = 1 Then
    If Target <> "" Then
      Target.Offset(0, 6) = Date
    Else
      Target.Offset(0, 6) = ""
    End If
  Else
    For Each rng In Target
      If Not Intersect(rng, Range("A12:A31")) Is Nothing Then
        If rng <> "" Then
          rng.Offset(0, 6) = Date
        Else
          rng.Offset(0, 6) = ""
        End If
      End If
    Next
  End If
End If
ErrExit:
Application.EnableEvents = True
End Sub


Gruß Sepp

Anzeige
AW: Beim schreiben in Zelle Datum in andere Zelle
03.09.2006 11:33:34
Andreas
Hallo Sepp,
hab jetzt 2 Varianten bekommen. Beide machen das was sie sollen. Danke für eure Mühe.
Gruß Andreas

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Datum in Excel automatisch setzen bei Eingabe in Zelle


Schritt-für-Schritt-Anleitung

Um das Datum automatisch in eine bestimmte Zelle zu setzen, wenn du in einer anderen Zelle etwas eingibst, kannst du VBA (Visual Basic for Applications) verwenden. Hier ist eine einfache Anleitung, wie du das umsetzen kannst:

  1. Excel öffnen: Starte Excel und öffne die Datei, in der du diese Funktion nutzen möchtest.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Ein neues Modul erstellen: Klicke im VBA-Editor mit der rechten Maustaste auf "Diese Arbeitsmappe" und wähle "Einfügen" > "Modul".

  4. Code einfügen: Kopiere den folgenden VBA-Code und füge ihn in das Modul ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Const Watch = "A12:A31"
       Dim ber As Range, z As Range
       Set ber = Intersect(Target, Range(Watch))
       If Not ber Is Nothing Then
           For Each z In ber
               If z.Value <> "" Then
                   z.Offset(0, 6) = Date
               Else
                   z.Offset(0, 6) = ""
               End If
           Next z
       End If
    End Sub
  5. Speichern und Schließen: Speichere deine Änderungen und schließe den VBA-Editor.

  6. Teste die Funktion: Gehe zurück zu deiner Excel-Datei und ändere einen Wert in den Zellen A12 bis A31. Das aktuelle Datum sollte in die entsprechenden Zellen G12 bis G31 gesetzt werden.


Häufige Fehler und Lösungen

  • Fehler: Das Datum wird nicht gesetzt.

    • Lösung: Überprüfe, ob Makros aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen und aktiviere die Option für Makros.
  • Fehler: Der Code funktioniert nicht wie erwartet.

    • Lösung: Stelle sicher, dass der VBA-Code im richtigen Arbeitsblatt-Modul eingefügt wurde. Du solltest den Code in das Modul für das spezifische Arbeitsblatt einfügen, auf dem du die Änderungen vornehmen möchtest.

Alternative Methoden

Wenn du keine VBA-Lösung nutzen möchtest, kannst du die Funktion =HEUTE() in Verbindung mit einer WENN-Funktion verwenden. Beachte jedoch, dass diese Methode nicht automatisch aktualisiert, wenn sich der Wert in der Zelle ändert.

  1. In Zelle G12 kannst du folgende Formel verwenden:

    =WENN(A12<>"",HEUTE(),"")
  2. Ziehe die Formel nach unten bis G31, um sie auf die anderen Zellen anzuwenden.


Praktische Beispiele

Hier sind zwei Beispiele, wie du die VBA-Lösung umsetzen kannst:

  1. Einfaches Datum setzen:

    • Wenn in A12 "Test" eingegeben wird, erscheint in G12 das aktuelle Datum.
  2. Mehrere Zellen überwachen:

    • Der VBA-Code setzt das Datum in G12, G13, ..., G31, wenn du einen Wert in A12, A13, ..., A31 eingibst.

Tipps für Profis

  • Ereignissteuerung: Nutze Application.EnableEvents = False, um zu verhindern, dass der Code sich selbst auslöst, während du Änderungen vornimmst.
  • Fehlerbehandlung: Füge eine Fehlerbehandlung in deinen Code ein, um unerwartete Probleme abzufangen.
  • Benutzerdefinierte Formate: Du kannst das Datum in einem benutzerdefinierten Format anzeigen, indem du die Formatierung in Excel anpasst.

FAQ: Häufige Fragen

1. Wie kann ich den VBA-Code anpassen, um mehrere Zellen gleichzeitig zu überwachen?
Du kannst den Bereich in der Const Watch-Zeile anpassen, um mehr Zellen hinzuzufügen, z.B. A1:A100.

2. Was passiert, wenn ich eine Zelle leere?
In dem bereitgestellten VBA-Code wird das Datum in der entsprechenden Zelle ebenfalls gelöscht, wenn die überwachte Zelle leer ist.

3. Ist dieses Verfahren in allen Excel-Versionen verfügbar?
Ja, VBA ist in den meisten gängigen Excel-Versionen (Excel 2010, 2013, 2016, 2019 und Microsoft 365) verfügbar. Achte darauf, dass du die richtige Version verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige