Supportnet / Forum / Tabellenkalkulation
Skript geht nur wenn man Zelle manuell ändert
Frage
Hallo zusammen!
Ich habe ein VBA-Skript in Excel, das mit den alten Wert mit dem neuen Wert ein und derselben Zelle vergleicht.
Code steht unten. Wenn ich die Zelle manuell ändere, d.h. einen Wert direkt rein schreibe, geht es einwandfrei (z.B. "alter Wert = 1" ändere ich um in "neuer Wert = 2" - das Skript berechnet mit nun die prozentuale Änderung und schreibt sie in Nachbarzelle).
Nun ändere ich die Zelle aber nicht selbst, sondern über eine Formel, die aus anderen Zellen den Wert berechnet (also: "alter Wert =G1+G2" wird zu "neuer Wert = G1+G2" (wobei G2 einen anderen Wert hat). Das SKript berechnet mir nun gar nichts.
Woran liegt das? Muss ich den Wert erst umformatieren? (Mit der Fkt. =WERT klappt ds nicht).
Wäre schön, wenn mir jemand helfen könnte.
Grüße
Marc
[code]Option Explicit
Public Alter_Eintrag As Variant
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
Application.EnableEvents = False
If Alter_Eintrag <> "" And Target.Cells <> Alter_Eintrag And Not Intersect(Target, [G9, G12, G13, G16, G23, G30, G37, G44, G51, G58, G65, G72, G79, G86, G93, G100, G107, G114, G121, G128, G135, G142, G149, G156]) Is Nothing Then
Cells(Target.Row, Target.Column + 1) = (Cells(Target.Row, Target.Column) - Alter_Eintrag) / (Alter_Eintrag)
End If
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Alter_Eintrag = Target.Cells
End Sub[/code]
Antwort 1 von Beverly
Hi Mark,
du musst in diesem Fall die Zellen überwachen, in die du den Wert einträgst, der den Formelwert beeinflusst, nicht die Zelle mit der Formel.
Bis später,
Karin
du musst in diesem Fall die Zellen überwachen, in die du den Wert einträgst, der den Formelwert beeinflusst, nicht die Zelle mit der Formel.
Bis später,
Karin
Antwort 2 von marcjoerg
Hi!
Danke für die Antwort.
Gäbe es auch noch eine andere Möglichkeit, denn in Wirklichkeit ist die Formel etwas (sehr) komplexer als nur G1+G2. Zudem kommt erschwerend hinzu, dass ich den Ursprungswert nichmal selbst hin scheibe sondern duch eine externe Datenquelle (Internet) selbst geholt wird.
Grüße
Marc
Danke für die Antwort.
Gäbe es auch noch eine andere Möglichkeit, denn in Wirklichkeit ist die Formel etwas (sehr) komplexer als nur G1+G2. Zudem kommt erschwerend hinzu, dass ich den Ursprungswert nichmal selbst hin scheibe sondern duch eine externe Datenquelle (Internet) selbst geholt wird.
Grüße
Marc
Antwort 3 von Beverly
Hi Mark,
dann hast du nur die Möglichkeit, das Worksheet_Calculate Ereignis zu verwenden.
Bis später,
Karin
dann hast du nur die Möglichkeit, das Worksheet_Calculate Ereignis zu verwenden.
Bis später,
Karin
Antwort 4 von marcjoerg
Hi Karin!
Und das Ereignis "Worksheet_Calculate" macht was?
Ich habe nun verstanden, warum das wohl nicht geht. Denn sobald ich =G1+G2 mache, ändert sich die Zelle ja nicht sondern nur der Wert. Aber das "sieht" das Makro wohl nicht.
Grüße
Marc
Und das Ereignis "Worksheet_Calculate" macht was?
Ich habe nun verstanden, warum das wohl nicht geht. Denn sobald ich =G1+G2 mache, ändert sich die Zelle ja nicht sondern nur der Wert. Aber das "sieht" das Makro wohl nicht.
Grüße
Marc
Antwort 5 von Beverly
Hi Marc,
Calculate = Berechnung und tritt ein, sobald in der Tabelle eine Berechnung ausgeführt wird, und die Veränderung eines Wertes durch eine Formel ist eine Berechnung.
Bis später,
Karin
Calculate = Berechnung und tritt ein, sobald in der Tabelle eine Berechnung ausgeführt wird, und die Veränderung eines Wertes durch eine Formel ist eine Berechnung.
Bis später,
Karin

