Microsoft Excel

Herbers Excel/VBA-Archiv

Graph ein-und ausblenden


Betrifft: Graph ein-und ausblenden
von: Christian
Geschrieben am: 11.12.2018 08:30:38

Moin alle zusammen,

über eine Zelle möchte ich zwei Diagramme ein -bzw. ausblenden lassen aber ich bekomme die Fehlermeldung "Deklaration der Prozedur entspricht nicht der Beschreibung eines Ereignisses oder einer Prozedur mit demselben Namen"?

Wo liegt mein Fehler? Vielen Dank und beste Grüße
Christian

Private Sub Worksheet_Change()
           
    Dim MSN_92 As ChartObject
    Dim MSN_85 As ChartObject
    
    Set MSN_92 = ActiveSheet.ChartObjects(11)
    Set MSN_85 = ActiveSheet.ChartObjects(10)

    If Worksheets("Graph").Range("G10").Value = "92" Then
           
            ActiveSheet.ChartObjects(11).Visible = True
            ActiveSheet.ChartObjects(10).Visible = False
    
    ElseIf Worksheets("Graph").Range("G10").Value = "85" Then
            
            ActiveSheet.ChartObjects(11).Visible = False
            ActiveSheet.ChartObjects(10).Visible = True
         
    End If

End Sub

  

Betrifft: AW: Graph ein-und ausblenden
von: Karl-Heinz Voltmann
Geschrieben am: 11.12.2018 10:30:28

Hallo Christian,

beim Worksheet_Change-Objekt gehört das Target-Element dazu. Nehme an, dass das der Fehler ist.

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$G$10" Then
   With ActiveSheet
    Select Case Target.Value
    Case "92"
      .ChartObjects(11).Visible = True
      .ChartObjects(10).Visible = False
    Case "85"
      .ChartObjects(11).Visible = False
      .ChartObjects(10).Visible = True
    End Select
   End With
  End If
End Sub
Das o.a. Beispiel regiert, wenn sich im Feld G10 was ändert.

viele Grüße
Karl-Heinz


  

Betrifft: Danke
von: Christian
Geschrieben am: 11.12.2018 11:34:17

Vielen Dank Karl-Heinz


  

Betrifft: Getestet - Funktioniert leider nicht
von: Christian
Geschrieben am: 11.12.2018 12:09:33

Auf dem ersten Blick sah die die Funktion sehr gut und schlüssig aus. Im Test funktioniert Sie aber leider nicht.

Ich habe Sie im Tabellenblatt eingebunden, auf dem auch die Diagramme zu finden sind. Aber es gibt keine Reaktion. Muss ich gewisse Formate berücksichtigen?


  

Betrifft: AW: Getestet - Funktioniert leider nicht
von: Karl-Heinz Voltmann
Geschrieben am: 11.12.2018 14:53:33

Hi Christian,

das tut mir leid. Na schauen wir mal:

Hast Du die Sub in das Klassenmodul des betreffenden Tabellenblattes eingefügt? Es kommt nicht in ein normales Modul. Aber das hattest Du ja geschrieben.

Die Funktion wird angesteuert, wenn auf dem Blatt in Zelle G10 etwas geändert wird.

Wenn Du einen Haltepunkt dort reinsetzt, wird die Funktion dann angesteuert? Wenn ja mal mit F8 durchgehen. Je nach Wert wird in den einen oder anderen Case verzweigt. Dort werden dann die Grafiken aus/eingeblendet. Das konnte ich allerdings nicht testen, weil ich die ja habe.

PS: Wenn bei jeder Änderung geschaut werden soll, was in G10 steht, muss es anders programmiert werden, aber das macht m.E. keinen Sinn.

Ansonsten mal genau beschreiben, was passiert. Funktioniert nicht ist keine besonders glückliche Aussage.

VG KH


  

Betrifft: AW: Getestet - Worksheet_Calculate
von: Christian
Geschrieben am: 11.12.2018 16:02:17

Nach ein wenig rumprobieren habe ich das Problem gelöst. Also mit deiner Funktion konnte ich arbeiten, wenn ich den Wert direkt in die Zelle eingegeben haben. Aber der Wert kam über den Filter einer Pivot Tabelle. Das heisst ich habe den Wert mit =G10 übertragen. Dann klappte die Funktion nicht. Im Netz habe ich mich schlau gemacht und bin auf folgende Codestruktur gekommen, welche genau so funktioniert wie ich Sie brauche.

Vielen Dank für deinen Support Karl-Heinz :)

Private Sub Worksheet_Calculate()
    
    If Range("$R$1").Value = 92 Then
        
        ChartObjects(6).Visible = True 'MSN85
        ChartObjects(7).Visible = False 'MSN92
        ChartObjects(8).Visible = False 'MSN65
        ChartObjects(9).Visible = False 'MSN58
        
    ElseIf Range("$R$1").Value = 85 Then
        
        ChartObjects(6).Visible = False
        ChartObjects(7).Visible = True
        ChartObjects(8).Visible = False
        ChartObjects(9).Visible = False
        
    ElseIf Range("$R$1").Value = 65 Then
        
        ChartObjects(6).Visible = False
        ChartObjects(7).Visible = False
        ChartObjects(8).Visible = True
        ChartObjects(9).Visible = False
        
    ElseIf Range("$R$1").Value = 58 Then
        
        ChartObjects(6).Visible = False
        ChartObjects(7).Visible = False
        ChartObjects(8).Visible = False
        ChartObjects(9).Visible = True
        
    End If
End Sub