Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1480to1484
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

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

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

60 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige