Den Max-Wert einer Zelle speichern, Macro zeigt Fehler
#1
Hallo zusammen,

ich hoffe jemand kann mir bei meinem Problemchen helfen. Der ursprüngliche Macro kam auch schon aus diesem Forum (Flexiblen Maximalwert speichern) der macht aber nicht ganz das was er soll. Doch zuerst etwas Prosa  Blush

Ich habe ein Excel-File mit mehreren Tabellen. 
- 3 Tabellen haben den Namen Wert1-Wert3. Hier steht immer in der Zelle B1 die Summe der Zahlen in der Spalte C. Diese Summe wird mit =SUMME(C:C) gebildet.
- eine Tabelle dient als Cockpit und gibt eine Übersicht hier werden in den Zellen D23-D25 die Summen aus den oberen 3 Tabellen übernommen.
- in der Zelle D5 wird mit =SUMME(D23:D25) der Gesamtwert der 3 Tabellen berechnet.
- in der Zelle D6 steht ein Wert, der manuell geändert werden kann
- In der Zeile D7 steht die Summe aus D5 und D6 (=SUMME(D5:D6))

Soweit das Setup. Nun soll der Maximalwert von D7 in der Zelle D8 gespeichert werden. Hierzu benutze ich diesen Macro:

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("d4:d6")) Is Nothing Then Exit Sub 'im Bereich D4-D6 werden Eintragungen gemacht

    Range("d8") = Application.Max(Range("d8"), Range("d7")) 'in Zelle D8 wird immer der Max Wert aus D7 und D8 festgehalten 
    End Sub

Das Kuriose ist das alles perfekt funktioniert wenn der manuelle Wert geändert wird. Ändert sich jedoch der Summen-Wert in D5 weigert sich der Macro das umzusetzen. Überschreibe ich die Formel funktioniert es wieder. Nun stehe ich sehr ratlos da, zumal in D7 auch eine Summe auf der gleichen Art gebildet wird aber dort funktioniert es. Hat jemand eine Idee/Lösung für mich? 
Damit man das besser nachvollziehen kann habe ich File als Attachment eingefügt. 

Schon jetzt mal Danke. Ach ja, da ich kaum Ahnung von VBA habe sind alle Erklärungen mega willkommen  :19:

Gruß
      Heiko 


Angehängte Dateien
.xlsm   Max-Wert.xlsm (Größe: 20,4 KB / Downloads: 2)
Top
#2
Hi,

das liegt daran, dass das "Worksheet_Change"-Ereignis nicht angestoßen wird, wenn die Berechnung nicht manuell in dem angegebenen Bereich erfolgt:

So müsste es gehen:

Code:
Private Sub Worksheet_Calculate()
    Range("D8") = Application.Max(Range("D8"), Range("D7")) 'in Zelle M10 wird immer der Max Wert aus M10 und N1o festgehalten
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("D4:D6")) Is Nothing Then Exit Sub 'im Bereich G10-L10 werden Eintragungen gemacht
    Range("D8").Calculate
End Sub
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Top
#3
Hallo Jörg,

1000 Dank für die schnelle und profesionelle Hilfe. Funktioniert 1A.

Danke

GRuß
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste