Zielwertsuche mit VBA

Hallo,
ich möchte in Excel die Zielwertsuche etwas automatisieren, sodass ich diese nich jedes Mal wieder aufrufen muss.
Also mein Problem (z.B.):
Ihc habe in den Zellen A1:A5 zahlen stehen. In Zelle A6 wird die Summe der Zahlen gebildet. Jetzt möchte ich, dass die Zelle A5 so abgeändert wird, dass die Summe 0 bleibt. Das soll nach jeder Eingabe von Zahlen in A1:A4 überprüft werden.
Also wenn A1=1; A2=2, A3=3; A4=4 sind, dann soll die Summe mit A5 0 sein. Damit muss A5 hier z.B. -10 sein.
Im Netz habe ich folgenden VBA-Code gefunden, den ich im VBA-Editor unter Module -> Modul1 eingetragen habe:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = „A1:A4“ Then
        Range(„A6“).GoalSeek Goal:=0, ChangingCell:=Range(„A5“)
    End If
End Sub

Die Datei habe ich als xlsm gespeichert und beim neu öffnen Makros aktiviert. Wenn ich jetzt in den Zellen A1:A4 eine Zahl ändere, dann wird A5 einfach nicht geändert.
Ich habe noch keine große Erfahrung mit VBA, aber der Code ist für mich recht plausibel. Woran kann es also liegen, dass A5 hier nicht geändert wird, dass A6 den Wert 0 annimmt?

Viele Grüße
Stefan

Moin,
aus Deiner Anfrage geht nicht hervor, warum Du überhaupt vba einsetzen willst.
Mit der einfachen Formel in A5 „= -A1-A2-A3-A4“ hättest Du doch immer und sofort die richtige Zahl da stehen.
Falls das aus irgendeinem Grund nicht zielführend sein sollte, wäre es hilfreich den Grund zu erfahren :smile:
Freundliche Grüße
Thomas

Hallo Stefan,

Im Netz habe ich folgenden VBA-Code gefunden, den ich im
VBA-Editor unter Module -> Modul1 eingetragen habe:

das ist nicht richtig, dieser Code gehört in das Modul des jeweiligen Blattes. Erkennbar am Blattnamen in Klammern. Nur dort wird der Code als ereigniscode erkannt und ausgeführt wenn das Ereignis (Zellwertänderung) eintritt.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = „A1:A4“ Then
        Range(„A6“).GoalSeek Goal:=0,
ChangingCell:=Range(„A5“)

    End If
End Sub

Die Datei habe ich als xlsm gespeichert und beim neu öffnen
Makros aktiviert. Wenn ich jetzt in den Zellen A1:A4 eine Zahl
ändere, dann wird A5 einfach nicht geändert.

Wenn du den Code dahin verschoben hast wo er hingehört kann und wird er so wie codiert funktionieren. Leider ist er in der IF-Abrage so codiert das der Code A5 nur ändert wenn A1:A4 gleichzeitig geändert wurden, durch Reinkopieren z.B.

Nimm z.B. diesen Code:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range(„A1:A4“)) Is Nothing Then Exit Sub
Range(„A6“).GoalSeek Goal:=0, ChangingCell:=Range(„A5“)
End Sub

Gruß
Reinhard