Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1592to1596
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 eintragen wenn Eingabe geändert wird

Datum eintragen wenn Eingabe geändert wird
22.11.2017 20:13:24
Dominik
Hallo an alle,
ich habe wieder einmal ein Problem bei dem mir bestimmt jemand weiterhelfen kann. Ich möchte, das bei einer Änderung (Change-Ereignis) bzw. beim Verlassen/ Wechseln einer Zelle mit der „Enter“-Taste das aktuelle Datum in der gleichen Zeile mit einem Offset eigetragen wird. Leider funktioniert mein Code noch nicht 100% (siehe auch Beispieldatei im Anhang). Dazu muss ich zum einen eine Überprüfung starten ob Zelle in der richtigen Spalte ist und ob die Zelle auch im gesuchten Bereich ist oder ob diese außerhalb liegt.
1.) Irgendwie startet der Code nicht immer zuverlässig und ich weiß leider nicht woran das liegt.
2.) Außerdem weiß ich nicht wie ich das mit der "Enter"-Taste hinbekomme.
3.) Ist die Überprüfung ob die AktuelleZelle im einem Range (Tabellenbereich) liegt richtig gelöst? Ich hätte das gerne so kompakt und kurz wie möglich. Mit mehrere If-Abfragen hintereinander müsste es ja auch gehen ist dann aber relativ unübersichtlich.
Code (im Modul des Arbeitsblattes: b>
Private Sub Worksheet_Change(ByVal AktuelleZelle As Range)
Application.DisplayAlerts = False
Select Case AktuelleZelle.Column        'Prüfen ob AktuelleZelle in Spalte für Eingaben ist
Case Is = 4
Application.EnableEvents = False
If Intersect(AktuelleZelle, Union(Range(ListObjects("tblTest1").DataBodyRange,  _
ListObjects("tblTest2").DataBodyRange), Range(ListObjects("tblTest3").DataBodyRange, ListObjects("tblTest4").DataBodyRange))) Then 'Prüfen ob AktuelleZelle im Bereich einer Tabelle
Sheet2.Unprotect
AktuelleZelle.Offset(0, 1).Value = Format(Date, "DD.MM.YYYY") 'Datum eintragen
End If
End Select
Sheet2.Protect
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
Information:
tblTest1 - tblTest4 sind die Namen/ Bezeichnungen der Tabellen
Beispieldatei:
https://www.herber.de/bbs/user/117849.xlsm

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
So...
23.11.2017 00:20:18
CitizenX
Hi,
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Union(Range("tblTest1"), Range("tblTest2"), Range("tblTest3"), Range(" _
tblTest4")), Columns(4)) Is Nothing Then Exit Sub
Me.Unprotect
Target.Offset(, 1) = Date
Me.Protect
End Sub

VG
Steffen
AW: So...
24.11.2017 20:38:48
Dominik
Guten Abend Stefan,
danke schonmal für die schnelle Antwort. Ich bin leider erst heute dazugekommen deinen Code zu testen. Er funktioniert soweit echt gut.
Wenn in der Tabelle der Wert aber gleich bleiben soll muss der Bediener immer die Zahl nochmals eintippen und auf die "Enter"-Taste. Gibt es hier nicht eine möglichkeit beim SelectChance-Ereignis zu prüfen mit welcher Taste man die selektion gewechselt hat? Dann könnte der Code prüfen liegt die zuvor selektierte Zelle im Range und ist diese in Spalte 4 und wurde die Entertaste gedrückt, dann schreib mir das Datum in die vorgesehene Zelle.
Funktioniert sowas und wenn ja wie?
Dir bzw. euch noch ein schönes Wochenende.
Gruß
Dominik
Anzeige
AW: Datum eintragen wenn Eingabe geändert wird
25.11.2017 20:02:28
onur
Du brauchst nur eine globale variable, die immer im Selection_Change-Ereignis mit dem Wert von Target gefüttert wird.
Nur wenn im Change_Ereignis Target im gewünschten Bereich ist, wird die Variable dort in die Target-Zelle zurückgeschrieben und danach in die Nachbarzelle das Datum eingetragen.
AW: Datum eintragen wenn Eingabe geändert wird
27.11.2017 20:42:36
Dominik
Guten Abend an alle,
ich habe das jetzt mal versucht umzusetzen.
Ich habe den Inhalt des Targets beim SelectionChange-Ereignis "gespeichert" und dann die Zelle wieder beschrieben (siehe Code).
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
p_dblZelleSelectChange = Target.Value
Debug.Print p_dblZelleSelectChange
Target.Value = p_dblZelleSelectChange
End Sub
Das sorgt mir ja wieder dafür, dass das Change-Ereignis ausgelöst wir. Dabei trage ich dann das aktuelle Datum ein. Mit Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.DisplayAlerts = False
Application.EnableEvents = False
If Intersect(Target, Union(Range("tblTest1"), Range("tblTest2"), Range("tblTest3"), Range(" _
tblTest4")), Columns(4)) Is Nothing Then Exit Sub
modBlattschutz.BlattschutzAus 'Modul mit dem auf allen Arbeitsblätter der Schutz  _
ausgeschalten wird
Target.Offset(0, p_cintOffsetDatumWertVermoegen).Value = Format(Date, "DD.MM.YYYY")
modBlattschutz.BlattschutzAn  'Modul mit dem auf allen Arbeitsblätter der Schutz  _
angeschalten wird
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
Kann ich das ganze nun noch so gestalten, das ich eine Abfrage habe die Prüft ob das SelectionChange-Ereignis durch die "Enter"-Taste ausgelöst wurde?
Andernfalls läuft der Code bei jedem Ändern der Zelle ab was eigentlich nicht notwendig ist.
Vielen Dank für eure Hilfe.
Gruß
Dominik
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige