El tutorial o código que encontrarás en este artículo es la solución más fácil y válida que encontramos a esta inquietud o problema.
Solución:
Siempre que no sé cómo hacer algo como esto, enciendo el macro grabadora.
Tenía un gráfico con cuatro series y usé la función de filtro en Excel 2013 para ocultar y mostrar la segunda serie, mientras que el macro la grabadora estaba funcionando.
Aquí está el código relevante:
ActiveChart.FullSeriesCollection(2).IsFiltered = True
' series 2 is now hidden
ActiveChart.FullSeriesCollection(2).IsFiltered = False
' series 2 is now visible
No importa el tipo de serie (línea o columna), esto sirve para cualquiera de ellas.
Creo que la propiedad que está buscando es la SeriesCollection.Format.Line.Visible
propiedad. Rápidamente creé un libro de Excel y agregué un conjunto de datos simple (solo 1-10) y agregué un gráfico de líneas “Gráfico 2” a la hoja Hoja1.
Este código desactivó la visibilidad de la línea:
Option Explicit
Private Sub Test()
Dim cht As Chart
Dim ser As Series
'Retrieve our chart and seriescollection objects'
Set cht = Worksheets("Sheet1").ChartObjects("Chart 2").Chart
Set ser = cht.SeriesCollection(1)
'Set the first series line to be hidden'
With ser.Format.Line
.Visible = msoFalse
End With
End Sub
Y del mismo modo, establecer el ser.Format.Line.Visible
propiedad a msoTrue
volvió a hacer visible la línea.
En cuanto a recuperar el gráfico en sí, primero tenía que activarlo, luego configurar mi cht
variable al ActiveChart. Para ver el nombre de su gráfico, selecciónelo y busque en el cuadro de nombre (cerca de donde ingresaría el valor de celda/fórmula).
Actualizar
Al usar el método anterior, el nombre de la serie permanece en el cuadro de leyenda. No pude encontrar una propiedad de visibilidad para el SeriesCollection
en la leyenda, sin embargo, una solución consiste simplemente en cambiar el nombre de la serie como una serie vacía string (esto hará que la serie desaparezca de la leyenda) y luego cambie el nombre de la serie cuando quiera mostrarla.
Este código a continuación alternará la visibilidad de la línea y el nombre de la serie en la leyenda.
Option Explicit
Private Sub Test()
Dim cht As Chart
Dim ser As Series
'Retrieve our chart and seriescollection objects'
Set cht = Worksheets("Sheet1").ChartObjects("Chart 1").Chart
Set ser = cht.SeriesCollection(1)
'Set the first series line to be hidden'
With ser.Format.Line
If .Visible = msoTrue Then
.Visible = msoFalse
ser.Name = vbNullString
Else
.Visible = msoTrue
ser.Name = "Series 1"
End If
End With
End Sub
Y, siempre que utilice .Format.Line.Visible = msoTrue
solo recuerda configurar ser.Name
de vuelta a cualquiera que sea el nombre de su serie es.
Si piensas que ha sido de provecho este artículo, nos gustaría que lo compartas con otros entusiastas de la programación así contrubuyes a dar difusión a este contenido.