kann mir bitte jemand einen Tipp geben, wie ich die Formel =V5=MAX(V:V) abändern muß, dass mir nur der jeweilige MAX Wert angezeigt wird?
Habe versucht mit "hinzufügen 2. Bedingung Schrift weiß", funktioniert aber nicht.
Danke schon mal
Josef
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
If Intersect(Range("J5:L196"), Target) Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each Zelle In Intersect(Range("J5:L196"), Target)
Range("V" & Zelle.Row) = Now
Next
Application.EnableEvents = True
End Sub
Ich weiß nicht, ob durch dises Makro die Datümer deshalb auch stehen bleiben, obwohl sie keinen MAX-Wert mehr haben.
For Each Zelle In Intersect(Range("J5:L196"), Target)
Range("V" & Zelle.Row) = Now
Next
Intersect ist hier nicht mehr erforderlich, denn die Änderungsfälle in anderen Bereichen wurden bereits zuvor mit Intersect ausgeschlossen. Das Target, das hier die geänderte Zelle repräsentiert, liegt also bereits im relevanten Bereich. Das Intersect bewirkt hier nur, dass auch genau dieses Target als Bezugsbereich ausgewählt wird. Damit hat dieser nur eine Zelle, wodurch die Schleife auch stets nur 1× durchlaufen wird, also überflüssig ist. Die Objekt-Laufvariable Zelle repräsentiert somit ebenfalls Target. Da das so ist, ist es zwar nicht ganz überflüssig, mit Zelle.Row die Zeile von Target zu bestimmen, aber mit ihrer Hilfe über Range die Zelle für den Datumseintrag in Spalte V zu ermitteln. Das macht man hier besser mit Cells, da der Eintrag in unterschiedl Spalten erfolgen kann, sonst käme auch Offset infrage. Somit ergäbe sich flgd Prozedur:
Private Sub Worksheet_Change(ByVal Target As Range)
Const adRelBereich$ = "J5:L196", nrDatNotatSp As Long = 22
If Not Intersect(Target, Range(adRelBereich)) Is Nothing Then
With Application
.EnableEvents = False
Me.Cells(Target.Row, nrDatNotatSp) = Now
.EnableEvents = True
End With
End If
End Sub
Die beiden Konstanten am Prozeduranfang machen diese „pflegeleichter“ → man muss bei Änderungen nicht die ganze Proz durchsuchen (was hier allerdings kein Problem wäre). Die direkte Einbindung der Behandlungsroutine in das If-Konstrukt zu Intersect wurde gewählt, um hier ggf später weitere Pgm-Verzweigungen mit ElseIf einbinden zu können → merke: Es ist nur eine Change-Proz direkt im Dokument-Klassenmodul des Blattes möglich (eine weitere in dem der Mappe und noch eine zur ganzen Application [Xl], deren Klassenmodul aber standardmäßig nicht vorbereitet ist)!
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
If Intersect(Range("J5:L196"), Target) Is Nothing Then Exit Sub
Application.EnableEvents = False
With Range(Cells(5, 22), Cells(Rows.Count, 22).End(xlUp))
.Font.Color = .Interior.Color
For Each Zelle In Intersect(Range("J5:L196"), Target)
Cells(Zelle.Row, 22) = Now
Cells(Zelle.Row, 22).Font.ColorIndex = xlColorIndexAutomatic
Next
End With
Application.EnableEvents = True
End Sub
Gruess Hansueli