Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1924to1928
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Change-Ereignis wenn Summe geändert

Change-Ereignis wenn Summe geändert
01.04.2023 22:06:55
Timm R.

Guten Abend zusammen,

ich möchte per Change-Ereignis bei Änderung einer Summe (Tabelle2) in einer anderen Tabelle (Tabelle1) eine Zelle farbig markieren.

Hier findet ihr die Beispieldatei.

https://www.herber.de/bbs/user/158549.xlsm


Private Sub Worksheet_Change(ByVal Target As Range)
Dim Datum As Date
Dim Suche As Variant

    Set Target = Intersect(Target, Range("D2:D8"))
    
Datum = Target.Offset(0, -3).Value

Suche = Application.Match(Datum, Tabelle1.Range("A2:A8"), 0)
Tabelle1.Cells(Suche, 2).Interior.Color = vbGreen
End Sub


Nachfolgend nun noch eine genauere Beschreibung meines Vorhabens. In Tabelle2 Spalte D befinden sich Summenformel. Sobald sich eine dieser Summen ändert soll in Tabelle1 bei dem entsprechenden Datum die Zelle farbig markiert werden.

Folgende Fehlermeldungen erhalte ich bei der Ausführung:

1.) die Suche findet das Datum in Tabelle1 nicht-->Fehlercode2042
2.) Laufzeitfehler 91 : Objektvariable oder With-Blockvariable nicht festgelegt

Verstehe nicht wo die Fehler liegen.

Gruß
Timm

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Du musst bei den Summanden ansetzen
01.04.2023 22:32:41
lupo1
... die Änderung einer Summe ist kein Ereignis, die eines Summanden (so denn händisch eingetragen) schon.


AW: Change-Ereignis wenn Summe geändert
02.04.2023 12:55:23
GerdL
Moin Timm!
Private Sub Worksheet_Change(ByVal Target As Range)

        If Intersect(Target, Range("B2:C8")) Is Nothing Then Exit Sub
        If Target.CountLarge > 1 Then Exit Sub
    
 
        If WorksheetFunction.CountIf(Tabelle1.Range("A2:A8"), _
        CLng(CDate(Cells(Target.Row, 1).Value))) Then _
        Tabelle1.Cells(Application.Match(CLng(CDate(Cells(Target.Row, 1))), _
        Tabelle1.Range("A2:A8"), 0) + 1, 2).Interior.Color = vbGreen
  

End Sub
Gruß Gerd


Anzeige
AW: Change-Ereignis wenn Summe geändert
02.04.2023 21:52:31
Timm R.
Hallo Gerd,
hallo zusammen,

wodurch wird den das Change-Ereignis bei deiner Prozedur ausgelöst?

Laut Lupo löst die Änderung einer Formel das Change-Ereignis nicht aus.

Mit welchen Ereignis kann ich ein Makro starten wenn sich die Formel ändert oder ist dies nicht möglich?

Gruß Timm


AW: Change-Ereignis wenn Summe geändert
02.04.2023 22:00:42
ralf_b
du solltest schon genauer lesen was lupo geschrieben hat.
und dann den Code von Gerd ebenfalls genauer betrachten.

er überwacht die Summanden Spalten( Menge ,Preis) und nicht die Summenspalte.




AW: Change-Ereignis wenn Summe geändert
05.04.2023 19:57:59
Timm R.
Hallo Ralf_B,

danke euch dreien.

Hatte wirklich Summen und nicht Summanden gelesen. Jetzt macht die Lösung von Gerd auch Sinn und der Hinweis von Lupo natürlich auch.

Leider bin ich damit aber immer noch nicht weiter, weil ich ein Ereignis bräuchte das bei Änderung einer Formel ein Makro auslöst.

Ist dies möglich? Wenn, ja wie würde eine Lösung aussehen.

Danke für eure Zeit.

Gruß
Timm


Anzeige
AW: Change-Ereignis wenn Summe geändert
06.04.2023 13:06:53
GerdL
Hallo Timm,

dafür gibt es das Worksheet_Calculate-Ereignis.
Es reagiert allerdings auf jede Formeländerung. Daher die Rückfrage, was löst bei dir die Formeländerung außer Eingaben in Tabelle2!B2:C8 aus ?

Gruß Gerd


AW: Change-Ereignis wenn Summe geändert
06.04.2023 13:29:36
Daniel
Hi
um ein Makro nur bei der Änderung eines Formelergebnisses auszulösen, muss man etwas tiefer in die Trickkiste greifen.
ich kenne da zwei Methoden:

a) wenn nur einzelne Formeln betroffen sind:
- erstelle eine Textbox aus den ActiveX-Steuerelementen
- verknüpfe die Textbox mit der Formelzelle, indem du die Adresse in die Eigenschaft LinkedCell einträgst
- Erstelle das ChangeEvent-Makro für die Zelle. Dieses sollte auslösen, wenn sich das Formelergebnis aufgrund einer Neuberechnung ändert
da du für jede Zelle eine eigene Textbox brauchst, ist das natürlich nur für wenige Zellen nutzbar

b) für Massendaten
- kopiere die aktuellen Formelergebnisse und füge sie an einer freien Stelle als Wert ein
- Im Calculate-Event des Tabellenblatts mit den Formeln musst du jetzt in einer Schleife über die zu überwachenden Formeln laufen und deren Werte mit den Kopierten Werten vergleichen. Wenn diese gleich sind, passiert nichts, wenn nicht, hat sich das Formelergebnis geändert und du kannst die Aktion durchführen.
Vergiss nicht, auch das neue Ergebnis in die Sicherung zu übernehmen.
statt dem Calculate-Makro kannst du jetzt auch einfach die Bedingte Formatierung nutzen, um Zellen mit Änderung im Formelergebnis zu markieren, in dem du einfach Formelergebnis mit der Wertkopie vergleichst.

Gruß Daniel


Anzeige
korrektur
06.04.2023 13:31:22
Daniel
für Methode a) brauchst du natürlich das ChangeEvent der Textbox.
das löst aus, wenn sich der Textboxwert ändert.
Gruß Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige