Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
360to364
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
360to364
360to364
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Worksheet-Calculate über Formelbezug

Worksheet-Calculate über Formelbezug
10.01.2004 16:09:03
Klaus F.
Hallo Forum,
in B5:B100 stehen Datümer, in D5:D100 Summenformeln.
Ich möchte nun, dass bei einer Wert-Änderung in der D-Spalte in der
gleichen Reihe der B-Spalte das momentan höchste Datum von B5:B100
eingesetzt wird. Falls kein Datum in der B-Spalte vorhanden ist, dann
einfach Date.
Ich habs schon mit Worksheet-Calculate versucht, scheitere aber schon
an der indirekten Änderung durch die Summenformeln. Kann mir jemand
von Euch helfen?
Danke für jede Antwort
Klaus

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet-Calculate über Formelbezug
10.01.2004 17:19:10
Ramses
Hallo
Der Code gehört in die Arbeitsmappe wo er funktionieren soll.
Code kopieren
Mauszeiger auf Registernamen > Rechte Maustaste > Code anzeigen > einfügen

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim myMax As Double
If Target.Column <> 4 Then Exit Sub
myMax = Application.WorksheetFunction.Max(Range("B5:B100"))
Debug.Print myMax
If myMax = 0 Then
myMax = Date
End If
Target.Offset(0, -1) = myMax
Target.Offset(0, -1).NumberFormat = "dd/mm/yyyy"
End Sub

Gruss Rainer
Gibt noch Probleme: Excelversion??
10.01.2004 18:31:37
Klaus F.
Hallo Rainer, vielen Dank für Deine Antwort - aber es gibt noch Probleme:
1. Das Ereignis wird bei mir nicht ausgelöst, wenn sich die D-Spalte
über den Formelbezug ändert. Beispiel: in D5 steht SUMME(E6:E9) und
E9 verändert sich. Dann passiert mit dem Datum in B2 nichts.
2. Es verändern sich auch Zeilen ausserhalb des Bereichs. Beispiel:
Ich schreibe etwas in D2 und in B2 erscheint das Datum. Es darf aber
nur der Bereich B5:B100 angesprochen werden.
3. Wenn kein Datum in der Spalte steht erscheint statt Datum heute
der 11.01.2008 (?)
Mein Verdacht: gibt es hier wieder unterschiedliche Verhaltensweisen
zwischen Excel 97 und 2003? Wir hatten vor ein paar Tagen ein
ähnliches Thema mit Datum+Uhrzeit und Autofilter ...
Gruss
Klaus
Anzeige
Kein Problem der EXCEL Version
10.01.2004 20:08:59
Ramses
Hallo Klaus
Zu 1.
wenn der Zellinhalt durch einen externen Bezug aktualisiert wird, löst dies kein "Change"-Ereignis aus.
In diesem Fall ist es nicht möglich, das aktuelle oder grösste Datum zuzuordnen, weil die active Zelle irgendwo stehen kann und nicht sauber identifiziert werden kann.
Das Calculate - Ereignis fällt weg, weil hier alle Zellen berechnet werden, und demzufolge alle Zellen in D das grösste Datum zugeordnet bekämen.
Da sind die Grenzen von EXCEL erreicht.
Zu 2.
Dann musst du das halt anpassen
If Target.Column <> 4 And Target.Row < 5 Then Exit Sub

Zu 3.
MAX sucht den grössten Zahlenwert ( Datum ) in B5:B100.
Wenn dort noch eine andere Zahl drin steht, wird diese als Datum verwendet ( in deinem Beispiel 39458 ).
Da musst du selbst für schauen, dass dort nichts anderes drin steht.
Wenn kein Datum im Bereich ist, wird das Systemdatum genommen. Schau mal dein Datum auf deinem Rechner an.
Anzeige
Ein Dankeschön
10.01.2004 21:03:34
Klaus F.
Hallo Rainer,
der Fehler bei Date lag an "1904-Datumswerte" (war aktiviert),
jetzt wird das richtig angezeigt - und mit
If Not Intersect(Target, Range("D5:D100")) Is Nothing Then
konnte ich inzwischen auch den Bereich selber anpassen.
Das mit dem Change-Ereignis hatte ich mir auch so gedacht,
deshalb hatte ich auch mit Calculate experimentiert, aber leider
auch kein Ergebnis bekommen :-(
Trotzdem herzlichen Dank für Deine Mühe. Immerhin weiss ich
jetzt in welche Richtung ich nicht suchen muss ...
Einen schönen (Excel-)Abend noch
Klaus
Merci :-) Geschlossen m.T.
10.01.2004 21:22:11
Ramses
Hallo Klaus
das mit Intersect() hätte mir auch einfallen können ;-))
Gruss Rainer
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige