Saltar al contenido

Activar/desactivar la visibilidad de la serie de gráficos usando excel Macros/vba

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *