Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1752to1756
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
Zeitstempel mit mehreren Bedingungen
28.04.2020 12:56:49
Digoloofy
Hallo liebe Gemeinde,
dies ist mein Erster Eintrag in eurem Forum,
Ich hänge momentan an folgendem Problem:
ich habe mehrere Spalten, mit verschiedenen Bezeichnungen. Die Bezeichnung der Spalte A ist Datum, daraufhin kommen verschiedene Spalten mit diversen Namen bis einschließlich Spalte K. Die "Tabelle" soll laufend fortgeführt werden. Und jede Neue Zeile soll, wenn in
Spalte B,
oder Spalte C,
oder Spalte D ein Wert steht, ein Datum- und Zeitstempel bekommen. Allerdings, wenn diese Werte in den beschriebenen Spalten gelöscht werden, sollen auch die Stempel verschwinden.
Der Datumstempel soll in Spalte A geschrieben werden und der Zeitstempel soll in Spalte L geschrieben werden.
Mit Folgendem Code habe ich soweit eigentlich alles umgesetzt, aber die Datums -und Zeitstempel werden nur gesetzt wenn Spalte B einen Inhalt hat.
Kann mir jemand sagen wo mein Fehler liegt?
Vielen Dank schon mal im Voraus und nachführend mein bisheriger Code:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub
If Target.Value  "" Then
Target.Offset(0, -1).Value = Format(Now, "dd.mm.yyyy")
Target.Offset(0, 10).Value = Format(Now, "hh.mm.ss")
Else
Target.Offset(0, -1).ClearContents
Target.Offset(0, 10).ClearContents
End If
If Intersect(Target, Range("C:C")) Is Nothing Then Exit Sub
If Target.Value  "" Then
Target.Offset(0, -2).Value = Format(Now, "dd.mm.yyyy")
Target.Offset(0, 9).Value = Format(Now, "hh.mm.ss")
Else
Target.Offset(0, -2).ClearContents
Target.Offset(0, 9).ClearContents
End If
If Intersect(Target, Range("D:D")) Is Nothing Then Exit Sub
If Target.Value  "" Then
Target.Offset(0, -3).Value = Format(Now, "dd.mm.yyyy")
Target.Offset(0, 8).Value = Format(Now, "hh.mm.ss")
Else
Target.Offset(0, -3).ClearContents
Target.Offset(0, 8).ClearContents
End If
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Zeitstempel mit mehreren Bedingungen
28.04.2020 13:17:24
MRUTor
Hallo,
versuchs mal so:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B:B")) Is Nothing Then
Exit Sub
Else
If Target.Value  "" Then
Target.Offset(0, -1).Value = Format(Now, "dd.mm.yyyy")
Target.Offset(0, 10).Value = Format(Now, "hh.mm.ss")
Else
Target.Offset(0, -1).ClearContents
Target.Offset(0, 10).ClearContents
End If
End If
If Intersect(Target, Range("C:C")) Is Nothing Then
Exit Sub
Else
If Target.Value  "" Then
Target.Offset(0, -2).Value = Format(Now, "dd.mm.yyyy")
Target.Offset(0, 9).Value = Format(Now, "hh.mm.ss")
Else
Target.Offset(0, -2).ClearContents
Target.Offset(0, 9).ClearContents
End If
End If
If Intersect(Target, Range("D:D")) Is Nothing Then
Exit Sub
Else
If Target.Value  "" Then
Target.Offset(0, -3).Value = Format(Now, "dd.mm.yyyy")
Target.Offset(0, 8).Value = Format(Now, "hh.mm.ss")
Else
Target.Offset(0, -3).ClearContents
Target.Offset(0, 8).ClearContents
End If
End If
End Sub

Grus Tor
Anzeige
AW: Zeitstempel mit mehreren Bedingungen
28.04.2020 13:21:34
Digoloofy
Hi Tor,
habe es soeben getestet, leider genau das gleiche Problem. Die Erste Bedingung in Spalte B:B wird umgesetzt, die beiden Spalten C:C und D:D setzen aber keinen Stempel.
Vielen Dank trotzdem für die schnelle Antwort.
Grüße Digoloofy
AW: Zeitstempel mit mehreren Bedingungen
28.04.2020 13:36:00
Matthias
Hallo,
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B:B")) Is Nothing Then
If Target.Value  "" Then
Target.Offset(0, -1).Value = Format(Now, "dd.mm.yyyy")
Target.Offset(0, 10).Value = Format(Now, "hh.mm.ss")
Else
Target.Offset(0, -1).ClearContents
Target.Offset(0, 10).ClearContents
End If
End If
If Not Intersect(Target, Range("C:C")) Is Nothing Then
If Target.Value  "" Then
Target.Offset(0, -2).Value = Format(Now, "dd.mm.yyyy")
Target.Offset(0, 9).Value = Format(Now, "hh.mm.ss")
Else
Target.Offset(0, -2).ClearContents
Target.Offset(0, 9).ClearContents
End If
End If
If Not Intersect(Target, Range("D:D")) Is Nothing Then
If Target.Value  "" Then
Target.Offset(0, -3).Value = Format(Now, "dd.mm.yyyy")
Target.Offset(0, 8).Value = Format(Now, "hh.mm.ss")
Else
Target.Offset(0, -3).ClearContents
Target.Offset(0, 8).ClearContents
End If
End If
End Sub

Fragt sich nur was soll passieren, wenn z.B. in B und in C gleicher Zeile ein Wert steht bzw. gelöscht wird.
Gruß Matthias
Anzeige
AW: Zeitstempel mit mehreren Bedingungen
28.04.2020 13:49:53
Digoloofy
Hi Matthias,
Vielen Dank erst mal, der Stempel wird schon mal gesetzt, das ist schon mal super. Aber deine Frage ist definitiv berechtigt. Ich habe nämlich beim testen soeben bemerkt, dass ich an eine Sache nicht gedacht habe. Die Stempel dürfen erst gelöscht werden, wenn in allen 3 Spalten, also B:B, C:C und D:D kein Wert mehr steht. Dies ist in der derzeitigen Ausführung natürlich nicht der Fall, da die Stempel ja gelöscht werden, sobald nur einer der Werte in den Spalten gelöscht werden. Hättest du mir dafür vielleicht auch noch eine Lösung?
Vielen Dank weiterhin
Grüße Digoloofy
Anzeige
ja klar hab ich da auch eine Lösung ...
28.04.2020 19:16:10
Matthias
Hallo
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B:B")) Is Nothing Then
If Target.Value  "" Then
Target.Offset(0, -1).Value = Format(Now, "dd.mm.yyyy")
Target.Offset(0, 10).Value = Format(Now, "hh.mm.ss")
Else
If Target.Offset(, 1) = "" And Target.Offset(, 2) = "" Then
Target.Offset(0, -1).ClearContents
Target.Offset(0, 10).ClearContents
End If
End If
End If
If Not Intersect(Target, Range("C:C")) Is Nothing Then
If Target.Value  "" Then
Target.Offset(0, -2).Value = Format(Now, "dd.mm.yyyy")
Target.Offset(0, 9).Value = Format(Now, "hh.mm.ss")
Else
If Target.Offset(, -1) = "" And Target.Offset(, 1) = "" Then
Target.Offset(0, -2).ClearContents
Target.Offset(0, 9).ClearContents
End If
End If
End If
If Not Intersect(Target, Range("D:D")) Is Nothing Then
If Target.Value  "" Then
Target.Offset(0, -3).Value = Format(Now, "dd.mm.yyyy")
Target.Offset(0, 8).Value = Format(Now, "hh.mm.ss")
Else
If Target.Offset(, -1) = "" And Target.Offset(, -2) = "" Then
Target.Offset(0, -3).ClearContents
Target.Offset(0, 8).ClearContents
End If
End If
End If
End Sub


If Target.Count > 1 Then Exit Sub
deshalb, weil es sonst einen VBA-Fehler gibt wenn Du z.B mehr als eine Zelle markierst und Inhalt löschst oder befüllst.
Gruß Matthias
Anzeige
alternativ Zellmarkierung nur einzeln zulassen
28.04.2020 20:52:27
Matthias
Hallo
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then
MsgBox "Es darf nur [eine! Zelle] markiert werden", vbCritical
ActiveCell.Select
Exit Sub
End If
End Sub
Gruß Matthias
AW: ja klar hab ich da auch eine Lösung ...
29.04.2020 07:47:09
Digoloofy
Hi Matthias,
habe jetzt beide Programmzeilen aufgenommen. Der Code für die Stempel funktioniert einwandfrei, habe dann auch den Code mit der Messagebox aufgenommen, da es definitiv besser ist, für alle Nutzer, wenn klar ist, dass wirklich nur eine Zelle ausgewählt und gelöscht werden darf.
Vielen Dank für die Lösung, ist 1A.
Damit hat sich dieser Beitrag erledigt und ist komplett gelöst.
Beste Grüße
Digoloofy
Anzeige
Eingrenzung auf Range("B:D") ...
29.04.2020 09:32:40
Matthias
Hallo
Ich würde diese Restriktion noch auf den relevanten Bereich einschränken
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B:D")) Is Nothing Then
If Target.Count > 1 Then
MsgBox "Es darf nur eine! Zelle markiert werden wenn sich in der Markierung eine Zelle im  _
Bereich der Spalten(B,C,D) befindet", vbCritical
ActiveCell.Select
Exit Sub
End If
End If
End Sub
Denn es kann schon mal sein das Du außerhalb der Spalten(B,C,D) arbeiten willst. Dann würde Dich das sicher ganz schnell extrem nerven ;-)
Gruß Matthias
Anzeige
AW: Eingrenzung auf Range("B:D") ...
29.04.2020 09:37:32
Digoloofy
Hi Matthias,
ist vorhin schon vorgekommen, habe an der Datei gewerkelt und für den Zeitraum den Code rausgenommen. Vielen Dank dir. Bist ja ein wahnsinns Käppsele.
Bist definitiv eine Bereicherung für dieses Forum ;)
Grüße Digoloofy
nun gibts da verschiedene Bedeutungen ...
29.04.2020 18:15:59
Matthias
... für Käppsele
Ich gehe mal davon aus Du hast die positivste Bedeutung gemeint ;-)
Ich würde es nun aber noch weiter einschränken.
If Not Intersect(Target, Range("B1:D10")) Is Nothing Then ...
wenn es sich z.B. um die ersten 10 Zeilen handelt.
Aber ich denke Du weißt was ich meine. Einfach den Bereich anpassen.
Gruß Matthias
Anzeige
AW: nun gibts da verschiedene Bedeutungen ...
29.04.2020 18:33:15
Digoloofy
Selbstverständlich nur im positiven Sinne.
Vielen Dank, aufgrund der Tatsache, dass diese Liste endlos weitergeführt wird, ist es nicht möglich auf einen Bestimmten Bereich einzugrenzen, wenn es um die Zeile geht, aber trotzdem danke für den Hinweis.
Gruß Digoloofy.

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige