CheckBox um Linien in einem Liniendiagramm darstellen
04.12.2024 22:43:51
ChimChim
Ich habe eine Exceldatei mit 39 Arbeitsblättern, auf den Arbeitsblättern 1-38 ist jeweils ein Diagramm mit X und Y Wert.
Im Arbeitsblatt 39 sind alle Diagramme zusammengeführt. Neben dem Diagramm habe ich für jedes Diagramm, genannt Hole, ein Kontrollkästen mit passenden Namen eingefügt. Nun bekomme ich es aber nicht hin damit mir die jeweilige Linie angezeigt wird wenn ich das Kontrollkästchen aktivere bzw andersrum.
ich habe folgendes Script eingefügt.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim chkBox As checkBox
Dim holeNumber As Integer
Dim chartObj As ChartObject
Dim seriesCount As Integer
Dim chartName As String
' Überprüfen, ob die Änderung in den Kontrollkästchen erfolgt ist
On Error GoTo ErrHandler
If Not Intersect(Target, Me.CheckBoxes) Is Nothing Then
' Der Diagrammname ist "Diagramm1"
chartName = "Diagramm1"
' Durchlaufen der Diagramme im Arbeitsblatt
For Each chartObj In Me.ChartObjects
' Überprüfen, ob das Diagramm den angegebenen Namen hat
If chartObj.Name = chartName Then
' Diagramm mit dem entsprechenden Namen gefunden
' Bestimmen Sie die Anzahl der Serien im Diagramm
seriesCount = chartObj.chart.SeriesCollection.Count
' Durchlaufen der Kontrollkästchen Hole 1 bis Hole 38
For holeNumber = 1 To 38
' Kontrollkästchen für das aktuelle Hole suchen
Set chkBox = Me.CheckBoxes("Hole " & holeNumber)
' Überprüfen, ob das Kontrollkästchen aktiviert oder deaktiviert wurde
If chkBox.Value = 1 Then
' Wenn aktiviert, die zugehörige Serie sichtbar machen
If holeNumber = seriesCount Then
chartObj.chart.SeriesCollection(holeNumber).Format.Line.Visible = msoTrue
End If
Else
' Wenn deaktiviert, die zugehörige Serie unsichtbar machen
If holeNumber = seriesCount Then
chartObj.chart.SeriesCollection(holeNumber).Format.Line.Visible = msoFalse
End If
End If
Next holeNumber
End If
Next chartObj
End If
Exit Sub
ErrHandler:
' Fehlerbehandlung, falls erforderlich
MsgBox "Fehler bei der Verarbeitung der Kontrollkästchen!"
End Sub
kann mir jemand sagen wo mein Fehler liegt.
Danke im voraus.
Anzeige