Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datum einfrieren bei Eintrag in andere Zelle

Datum einfrieren bei Eintrag in andere Zelle
12.03.2016 00:18:57
Andreas
Hallo zusammen,
ich will in Zelle A1 immer das aktuelle Datum haben. Habe dazu in A1 die Formel HEUTE(). Jetzt will ich, wenn der Eintrag "X" in B1 gemacht wird, das Datum fixieren. Wenn ich in B1 das "X" wieder entferne, soll in A1 wieder das aktuelle Datum also HEUTE() erscheinen.
Hierbei geht es um eine Anwesenheitsliste. Also jedesmal wenn einer nicht da ist mach ich B1 ein "X", das Datum wird fix und wenn er wieder kommt entferne ich das "X" aus B1 und das aktuelle Datum ist wieder da.
Hab das ganze schon über Formel probiert bekomme aber immer Probleme mit Zirkelbezügen.
VBA hab ich keine Ahnung.
Danke für eure Hilfe
Gruß
Andy

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum einfrieren bei Eintrag in andere Zelle
12.03.2016 01:38:41
MatthiasG
Hallo Andy,
Rechtklick auf Register "Tabelle1" (oder entsprechender Tabellenblattname unten), dann "Code anzeigen" klicken, dann diesen Code rein:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1")) Is Nothing Then
If Range("B1") = "" Then
Range("A1").Formula = "=TODAY()"
ElseIf UCase(Range("B1")) = "X" Then
Range("A1").Value = Date
Else
MsgBox "In B1 darf nur X oder Nichts stehen"
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
End If
End If
End Sub

Gruß Matthias

Anzeige
AW: Datum einfrieren bei Eintrag in andere Zelle
12.03.2016 02:07:52
Andreas
Danke Matthias
werd ich am WE probieren.
Gruß
Andy

AW: Datum einfrieren bei Eintrag in andere Zelle
12.03.2016 14:11:02
Andreas
Geht der Code für mehrere Zeilen?
Oder muss ich den Code anpassen in "A1:A20" und "B1:B20"?
funktioniertdas so?
Gruss
Andy

AW: Datum einfrieren bei Eintrag in andere Zelle
12.03.2016 20:12:57
Andreas
Hallo
der Code funzt aber nur bei Zelle A1 und B1. Ich habe aber eine Tabelle.
Dann sollte es für A1 bis A20 und B1 bis B20 funzen.
Gruß
Andy

Anzeige
AW: Datum einfrieren bei Eintrag in andere Zelle
13.03.2016 12:10:56
MatthiasG
Hallo Andy,
sorry, hatte Dienst...
folgenden Code mal probieren:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim z As Range, z0 As Range
Set z = Intersect(Target, Range("B1:B20"))
If Not z Is Nothing Then
For Each z0 In z
If z0 = "" Then
z0.Offset(0, -1).Formula = "=TODAY()"
ElseIf UCase(z0) = "X" Then
z0.Offset(0, -1).Value = Date
End If
Next z0
End If
End Sub

Die Fehlerprüfung hab ich rausgenommen, da innerhalb einer Schleife schlecht ein Undo() verwendet werden kann. Aber du kannst die Werte in Spalte B ja mit der Datenüberprüfung einschränken, falls nötig.
Und der Code prüft natürlich nicht, ob Spalte A manuell verändert wurde.
Gruß Matthias

Anzeige
AW: Datum einfrieren bei Eintrag in andere Zelle
13.03.2016 13:04:17
Andreas
Hallo Matthias,
habe den Code eingefügt. Sollte funzen. Jetzt muss ich den Code noch in meine Anwesenheitsliste auf Arbeit einfügen und über drei Schichten mal testen.
Danke
Andy

AW: Datum einfrieren bei Eintrag in andere Zelle
18.03.2016 22:38:00
Andreas
Hallo Matthias,
habe den Code jetzt eine Woche auf Arbeit laufen lassen. Ich komme zurecht. Aber: Mein Kollege hat eine andere Idee wie wir unser Problem lösen könnten. Er will über eine Schaltfläche alles aktualisieren, d.h. wenn B1:B20="X" soll A1:A20 nicht verändert werden. Ist B1:B20 leer soll A1:A20 das aktuelle Datum rein und fixiert werden. Wie gesagt das ganze ist eine Anwesenheitsliste und wird täglich aktualisiert.
Wird bestimmt etwas komplizierter. Ist es überhaupt umsetzbar?
Danke im Voraus
Andy
https://www.herber.de/bbs/user/104460.xlsx

Anzeige
AW: Datum einfrieren bei Eintrag in andere Zelle
19.03.2016 12:42:46
MatthiasG
Hallo Andy,
Klar ist das umsetzbar; das ist auch nicht komplizierter, als das ganze per Ereignisprozedur zu aktualisieren.
Wenn Bx leer ist, soll in Ax das aktelle Datum rein; soweit habe ich das verstanden.
Und wenn Bx nicht leer ist?
Soll dann nichts gemacht werden, oder soll in Ax die Formel "=HEUTE()" rein?
Und: Wie wird eigentlich sichergestellt, dass die Makros in der Mappe aktiviert werden?
Gruß Matthias

Anzeige
AW: Datum einfrieren bei Eintrag in andere Zelle
19.03.2016 14:36:42
Andreas
Hallo Matthias,
Wenn Bx leer aktuelles Datum, aber nicht die Formal "=HEUTE()", z.B. aus Zelle angenommen D1 wo die Formel steht übernehmen. Wenn Bx nicht leer ist also"=X" soll nichts gemacht werden. Das Datum was in Ax steht soll bleiben.
Mal kurz erklärt was ich machen will: Am Freitag mache ich meine Eintragungen. Mitarbeiter (MA) anwesend lasse ich Bx leer (wenn in Bx =X entferne ich das X). in Ax soll das Datum von Freitag. MA abwesend mache ich in Bx ein "X". Datum in Ax fixieren. Das ganze dann mit der Schaltfläche "Aktualisieren".
Am Montag öffne ich die Tabelle wieder. Die Eintragungen sollen dann noch so sein wie am Freitag. Ich mache wiedr meine "X" wer da ist und dann das ganze mit der Schaltfläche "Aktualisieren". Das ganze Tag um Tag.
Die Makros aktiviere ich in den Excel-Optionen.
gruß
Andy

Anzeige
AW: Datum einfrieren bei Eintrag in andere Zelle
20.03.2016 12:01:26
MatthiasG
Hallo Andy,
den Code in ein normales Modul (nicht ins Modul des Tabellenblattes), dann die Schaltfläche dem Makro zuordnen.
Ein Fehler könnte noch in der Erkennung der verwendeten Zeilen bestehen.
Ich verwende hier .UsedRange, das arbeitet aber nicht immer zuverlässig.

Option Explicit
Sub Aktualisieren()
Dim z As Range, z0 As Range, sh As Worksheet
Set sh = Sheets("Tabelle1") 'Namen anpassen!
Set z = Intersect(sh.UsedRange, sh.Range("A:A")).Offset(0, 1)
'MsgBox z.Address
For Each z0 In z
If Trim(z0) = "" Then 'Trim(), dann werden auch Leerzeichen werden als leere Zelle  _
interpretiert
z0.Offset(0, -1).Value = Date
' folgende 2 Zeilen auskommentiert: Nichts machen, wenn 'X' in Zelle
'ElseIf UCase(z0) = "X" Then
'    z0.Offset(0, -1).Value = Date
End If
Next z0
End Sub

Gruß Matthias

Anzeige
AW: Datum einfrieren bei Eintrag in andere Zelle
21.03.2016 00:25:23
Andreas
Hallo Matthias,
ich füge den Code morgen auf Arbeit ein. in meiner "test-Datei" hat es gefunzt.
Danke
Andy
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Datum einfrieren bei Eintrag in andere Zelle


Schritt-für-Schritt-Anleitung

Um in Excel das Datum automatisch einzufügen und zu fixieren, wenn ein bestimmter Eintrag in einer anderen Zelle gemacht wird, kannst du VBA verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne dein Excel-Dokument und gehe zum gewünschten Tabellenblatt.

  2. Klicke mit der rechten Maustaste auf den Tab des Tabellenblatts und wähle "Code anzeigen".

  3. Füge den folgenden VBA-Code ein:

    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim z As Range, z0 As Range
       Set z = Intersect(Target, Range("B1:B20"))
       If Not z Is Nothing Then
           For Each z0 In z
               If z0 = "" Then
                   z0.Offset(0, -1).Formula = "=TODAY()"
               ElseIf UCase(z0) = "X" Then
                   z0.Offset(0, -1).Value = Date
               End If
           Next z0
       End If
    End Sub
  4. Schließe den VBA-Editor und teste die Funktion, indem du in die Zellen B1 bis B20 ein "X" eingibst.


Häufige Fehler und Lösungen

  • Zirkelbezüge: Wenn du versuchst, die Formel =HEUTE() in der gleichen Zelle zu verwenden, in der die Änderung erfolgt, kommt es zu Zirkelbezügen. Stelle sicher, dass die Formel nur in Zellen verwendet wird, die nicht direkt betroffen sind.

  • Fehlende Makros: Wenn das Makro nicht funktioniert, überprüfe, ob die Makros in den Excel-Optionen aktiviert sind.


Alternative Methoden

Falls du VBA vermeiden möchtest, gibt es einige alternative Methoden:

  • Datenüberprüfung: Verwende die Datenüberprüfung, um sicherzustellen, dass nur bestimmte Werte (wie "X") in Zelle B1 bis B20 eingegeben werden.

  • Formeln: Du kannst auch Formeln verwenden, um das Datum festzuhalten, allerdings ist dies weniger flexibel als die VBA-Lösung. Ein Beispiel wäre die Verwendung von =WENN(B1="X";HEUTE();A1), was jedoch das Datum nicht fixiert.


Praktische Beispiele

Hier sind einige praktische Beispiele für das automatische Einfügen und Fixieren von Daten in Excel:

  • Anwesenheitsliste: Verwende den VBA-Code, um das Datum des Eintrags festzuhalten, wenn in einer Zelle "X" eingegeben wird.
  • Projektverfolgung: In einer Projektverfolgungstabelle kannst du das Datum des letzten Updates festhalten, wenn der Status geändert wird.

Tipps für Profis

  • Schaltflächen hinzufügen: Du kannst eine Schaltfläche erstellen, die den Code ausführt, um alle Daten gleichzeitig zu aktualisieren.

  • Fehlerbehandlung: Füge eine Fehlerbehandlung in deinen VBA-Code ein, um unerwartete Eingaben zu verwalten. Beispiel:

    If Not IsEmpty(z0) And UCase(z0) <> "X" Then
       MsgBox "Ungültige Eingabe!"
    End If

FAQ: Häufige Fragen

1. Wie kann ich das aktuelle Datum automatisch einfügen, wenn eine Zelle ausgefüllt wird?
Du kannst den oben genannten VBA-Code verwenden, um das Datum automatisch einzufügen, wenn die Zelle B1 bis B20 ausgefüllt wird.

2. Funktioniert dieser Code in Excel 365?
Ja, der Code sollte in Excel 365 sowie in früheren Versionen funktionieren, solange du die Makros aktiviert hast.

3. Kann ich das Datum in einer anderen Zelle fixieren?
Ja, du kannst den Code anpassen, um das Datum in einer beliebigen Zelle zu fixieren, indem du die Zellreferenzen im Code änderst.

4. Gibt es eine Möglichkeit, das automatische Datum ohne VBA zu fixieren?
Ohne VBA gibt es keine Möglichkeit, das Datum automatisch zu fixieren, da Excel-Formeln nicht statisch sein können.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige