Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

VBA > Prüfung eines Formelergebnisses





Frage

Hallo. Bin totale VBA-Anfängerin. Habe ein Makro, bei dem eine Messagebox aufgehen soll, wenn eine Zelle einen bestimmten Textwert annimmt. Dummerweise wird dieser Text über eine IF-Formel generiert und bei dem von mir verwendeten Code dadurch nicht als solcher erkannt: Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$F$4" Then If Target.Value = "Completed" Then MsgBox "Limit erreicht" End If End If End Sub Wie bekomme ich es hin, dass sich die Prüfung direkt auf das "Formelergebnis" bezieht? Außerdem wüsste ich gern, wie ich die Prüfung auf eine ganze Spalte anwenden kann. Hoffe, habe mich halbwegs verständlich ausgedrückt und warte auf Eure Tips...

Antwort 1 von JoeKe

Hallo Xuse,

Target ist die Zelle die geändert wird. Dem entsprechend musst du die Überprüfung durchführen.

Angenommen die Eingabe, die bewirkt das in F4 "Completed" steht, wird in E4 gemacht, dann muss dein Code so aussehen:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(Target.Row, Target.Column + 1) = "Completed" Then
MsgBox "Limit erreicht"
End If
End Sub


Gruß

JöKe

Antwort 2 von Xuse

Hallo JöKe,

danke für den Tip > funktioniert super, wenn in E4 eine direkte Eingabe erfolgt.
Leider wird der Wert, der bewirkt, dass im nächsten Feld "Completed" steht, ebenfalls über eine Formel berechnet. Und dann klappt das leider nicht mehr :-(
Hast Du dafür auch eine Lösung?

Danke & Gruß,
Xuse

Antwort 3 von JoeKe

Hallo Xuse,

du musst meinen Code nur entsprechend anpassen.

If Cells(Target.Row +x, Target.Column +y) = "Completed"

x = die Zeilen die die Eingabezelle von F4 weg ist.
y = die Spalten die die Eingabezelle von F4 weg ist.

x und y sind positiv, wenn sie vor F4 liegen und nagativ wenn sie hinter F4 liegen.


Gruß

JöKe

Antwort 4 von Xuse

Hm, so funktioniert das leider nicht, da ich nirgends in dem Sheet eine direkte Eingabe, sondern nur Formelverweise habe. Und dann scheint das Makro die Änderung des Ausgabewertes der Formel überhaupt nicht als Änderung wahrzunehmen...

Antwort 5 von Xuse

Trotzdem danke!
:-)

Antwort 6 von JoeKe

Hallo Xuse,

wann und wo soll den die Anzeige "Limit erreicht" erfolgen?
Auf dem Blatt in dem in F4 "Completed" steht?

Was ich bisher verstanden habe:
Es werden auf Blättern Eingaben gemacht.
Du hast ein Blatt auf dem mit diesen Eingaben Berechnungen gemacht werden.
In F4 wird, wenn eine Bedingung erfüllt ist "Completed" eingetragen.
Du möchtest zusätzlich eine Meldung "Limit erreicht".

Wenn du die Meldung "Limit erreicht" erhalten möchtest, während du auf einem anderen Blatt Eingaben machst, kopiere folgenden Code in das VBA-Projekt der Tabelle in der du die Eingaben machst:

Private Sub Worksheet_Change(ByVal Target As Range)
If Worksheets("Tabelle1").Range("F4") = "Completed" Then MsgBox "Limit erreicht"
End Sub


Tabelle1 ist das Blatt auf dem deine Berechnungen gemacht werden.

Gruß

JöKe

Antwort 7 von Xuse

Hallo JöKe,

das ist ja die Krux > es werden gar keine Eingaben gemacht. Die Berechnungen erfolgen auf Grundlage eines direkten Datenfeeds...
Wahrscheinlich ist ein Change-Worksheet einfach die falsche Wahl. Wie gesagt - bin bisher total unerfahren mit VBA.
Sorry für die Verwirrung.

Xuse

Antwort 8 von JoeKe

Hallo,

vielleicht hilf dir "Worksheet_Calculate" damit würde bei jeder Berechnung die Überprüfung ob in F4 "Completed" steht durchgeführt. Allerdings erhälst du dann bei jeder Berechnung die Meldung sobald die Bedingung erfüllt ist.

Gruß

JöKe

Antwort 9 von Xuse

Yep, das funktioniert!
Hab noch einen Parameter eingebaut um die Prüfung zu stoppen und jetzt klappt´s :-)
Danke & schönen Feierabend.
Xuse

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: