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

Lösung aus einem Beitrag funktioniert nicht

Forumthread: Lösung aus einem Beitrag funktioniert nicht

Lösung aus einem Beitrag funktioniert nicht
03.05.2024 13:09:37
Andreas Müller
Hallo,

in diesem Beitrag wird von dem gesprochen was ich gerne bei mir integrieren würde.
https://www.herber.de/forum/archiv/1180to1184/1183269_Aenderungen_einer_Zelle_Datum_aktualisieren.html

Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)

Dim Zelle As Range
If Intersect(Range("G3:R41"), Target) Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each Zelle In Intersect(Range("G3:R41"), Target)
Range("C" & Zelle.Row) = Date
Next
Application.EnableEvents = True
End Sub


In der Antwort von Ransi vom 20.10.2010 20:30:09 ransi gibt er den oben aufgeführten Code aus.
In diesem Beitrag wird von der Range D5:F1000 gesprochen, welche ich durch G3:R41 ersetzt habe. Die Ziel-Zelle für das Datum bei mir wäre C42.
Ändere ich etwas im Bereich G3:R41, dann sollte in der leeren Zelle C42 das aktuelle Datum eingetragen werden bzw. erscheinen.
Aktuell passiert da nichts, da ich nicht erkennen kann wie in diesem Teil des Code
Range("C" & Zelle.Row) = Date

Zelle C42 geortet werden kann. Kann mir jemand behilflich sein, was da noch falsch ist und ob das überhaupt so geht?

mfG
A. Müller

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Lösung aus einem Beitrag funktioniert nicht
03.05.2024 13:20:45
daniel
naja, hier ist ja das Prinzip, dass das Datum in die Zeile geschrieben wird, in der auch die Änderung passiert (Zelle.Row)
Wenn du aber nur für den ganzen Block ein einziges Datum benötigst, dann gehts auch viel einfacher:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Range("G3:R41"), Target) Is Nothing Then
Application.EnableEvents = False
Range("C42").value = Date
Application.EnableEvents = True
end if
end Sub


Gruß Daniel
Anzeige
AW: Lösung aus einem Beitrag funktioniert nicht
03.05.2024 13:35:53
Andreas Müller
Hallo Daniel,

danke erst einmal für die schnelle Antwort, aber es geht noch nicht was wahrscheinlich an mir und meiner Erklärung liegen mag. Ich habe jetzt den Code in der Tabelle29 der Arbeitsmappe hinterlegt.

Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("G3:R41"), Target) Is Nothing Then
Application.EnableEvents = False
Range("C42").Value = Date
Application.EnableEvents = True
End If
End Sub


Trage ich jetzt einen Wert im Bereich G3:R41 ein oder passen einen Wert darin an, dann bleibt Zelle C42 einfach leer. Das Format der Zelle C42 ist Datum (*14.03.2012). Wo ist der Haken dass es nicht geht?

Gruß Andreas
Anzeige
AW: Lösung aus einem Beitrag funktioniert nicht
03.05.2024 13:56:32
daniel
Keine Ahnung.
bei mir gehts.
wenns bei dir nicht geht, kanns das viele Ursachen haben, beispielsweise:
- Events sind noch ausgeschaltet
- du hast den Entwurfsmodus aktiviert
- du hast den Code in ein falsches Tabellenblattmodul geschrieben.

Bei Ratespielen ist es üblich, dass man für die richtige Lösung einen Preis bekommt.

Gruß Daniel
Anzeige
AW: Lösung aus einem Beitrag funktioniert nicht
03.05.2024 14:09:10
Oppawinni
Erste Maßnahme wäre vielleicht, dass du prüfst, inwieweit der Code ausgeführt wird.
Setze ein
Debug.print "Hallo"
oder sowas nach
Range("C42").value = Date
rein und wirf bitte deine beiden
Application.EnableEvents
raus, die brauchst du nicht und wenn du sie drinn lässt,
dann mindestens ein
On Error resume next
damit sicher gestellt ist, dass
Application.EnableEvents = true
in jedem Fall erreicht wird, auch wenn zuvor ein Fehler eintritt..
Anzeige
AW: Lösung aus einem Beitrag funktioniert nicht
03.05.2024 14:35:24
Andreas Müller
Hallo,

Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("G3:R41"), Target) Is Nothing Then
Range("C42").Value = Date
End If
End Sub


Hab jetzt die beiden Enable.Events Zeilen entfernt, gespeichert. Datei geschlossen und geöffnet, Wert im Bereich G3:R41 geändert und schwups, geht. Danke dafür.
Aber wenn ich schon dabei bin, EnableEvents, an dem es offenbar gelegen hat, muss man dazu noch etwas speziell "aktivieren" weil Daniel das oben in seiner Ursachenfindung aufgeführt hat?

Gruß Andreas
Anzeige
AW: Lösung aus einem Beitrag funktioniert nicht
03.05.2024 14:48:10
daniel
Hi
das Application.EnableEvents braucht man hier nicht, weil der Selbstaufruf zwar stattfindet, die Endlosschleife aber durch die vorhandene Bedingungsprüfung vermieden wird.
Sicherer ist aber, wenn ein Eventmakro eine Aktion ausführen muss, bei der es sich selbst aufruft, vorher mit dem Application.EnableEvents = False zu verhindern, dass die Eventmakros überhaupt ausgeführt werden.

das Problem hierbei ist, wenn man die Events bei Makroende nicht wieder per Befehl aktiviert, bleiben sie ausgeschaltet und es werden auch im "normalbetrieb" keine Events mehr ausgeführt, bis man entweder: den Befehl Application.EnableEvents = True ausführt (z.B. im Direktfenster) oder man Excel beendet und wieder neu startet.

das Application.EnableEvents = False nach Makroende aktiv bleibt, kann schnell passieren, meistens bei einem Fehlerabbruch oder wenn man im Einzelstepmodus testest und dann vorzeitig beendet ohne diesen Befehl auszuführen.

Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige