online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon marcjoerg vom 10.09.2019, 13:11 Options

Skript geht nur wenn man Zelle manuell ändert

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

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


Antwort schreiben

Antwort 1 von Beverly vom 10.09.2019, 13:30 Options

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

Antwort 2 von marcjoerg vom 10.09.2019, 13:38 Options

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

Antwort 3 von Beverly vom 10.09.2019, 13:44 Options

Hi Mark,

dann hast du nur die Möglichkeit, das Worksheet_Calculate Ereignis zu verwenden.

Bis später,
Karin

Antwort 4 von marcjoerg vom 10.09.2019, 14:03 Options

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

Antwort 5 von Beverly vom 10.09.2019, 14:31 Options

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

Ähnliche Themen

wieder Makro Code
achmi71  14.01.2007 - 135 Hits - 9 Antworten

VBS Skript zur Zeilenlöschung falls Zelle Bedingung erfüllt
MarcusLee  09.07.2007 - 37 Hits - 4 Antworten

Zelle automatisch befüllen
OliverNEU  07.07.2007 - 27 Hits - 1 Antwort

Berechnungsergebnis in andere Zelle
micico  16.11.2007 - 180 Hits - 5 Antworten

Zellen mit Zeilenumbruch aufschlüsseln ?
Jermaine-D2811  08.06.2008 - 149 Hits - 4 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026