827 Aufrufe
Gefragt in Tabellenkalkulation von
Liebe VBA-Profis!

Ich habe eine recht umfangreiche Tabelle inklusive eingebautem Chart.
Produktumsatz über die Zeit - Liniendiagramm.
Mittels Checkboxen kann gesteuert werden, ob Produkte in die
Beobachtung gelangen oder nicht. Wird die Checkbox für ein Produkt
deaktiviert, so werden die vorher existierenden Werte zu Nullwerten. Die
Reihen bleiben aber leider in der Legende bestehen. Um das zu
umgehen möchte ich durch einen ganz normalen Filter die Produkte mit
Jahressumme = 0 in der zugrunde liegenden Tabelle ausfiltern, wodurch
diese nicht mehr im Chart aufscheinen.
Das funktioniert prinzipiell auch recht gut, allerdings muss ich den Filter
jedes mal neu berechnen, damit Änderungen auch im Chart wirksam
werden. Ich habe schon versucht mit:

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.AutoFilter.ApplyFilter
End Sub

eine automatische Neuberechnung des Filters zu machen und somit
das Diagramm wirklich dynamisch hinzukriegen. Leider funtkioniert das
nicht, vielleicht weil die Zellen der zugrunde liegenden Tabelle nicht
direkt geändert wurden, sondern nur ein Formelergebnis darstellen??

Wahrscheinlich ist die Lösung für mein Problem sehr einfach und ich
seh sie nicht, bzw gibt es sicher auch alternative Wege zur Umsetzung
meines Plans.

Kann mir da wer von Euch helfen?

Besten Dank, Alex

2 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

ein erzeugter wert einer formel löst kein ereigniss aus

versuche einige Berechnungen zu beliebigen Ereignissen zu verlagern,um von dort aus zu agieren

gruss nighty
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

Syntax um Ereignisse im zaum zu halten

gruss nighty

z.b.

Private Sub Worksheet_Change(ByVal Target As Range)
Call EventsOff
'Deine Berechnungen
ActiveSheet.AutoFilter.ApplyFilter
Call EventsOn
End Sub

Public Sub EventsOff()
With Application.EnableEvents = False
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub

Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
...