Gráfico Excel: macro para espessura de linha variável definida pelo usuário

Gráfico Excel: macro para espessura de linha variável definida pelo usuário

Tenho várias séries de dados em um gráfico e quero que cada uma das 55 linhas do gráfico tenha espessuras diferentes com base na minha escolha. Eu vi a macro a seguir para ajustar a espessura de todas as linhas de uma só vez.

Sub SetWeights()
    Dim srs As Series
    For Each srs In ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection
        srs.Format.Line.Weight = 0.75
    Next
End Sub
  1. Existe alguma maneira (macro) de cada linha ter espessura diferente conforme definida em uma das colunas da planilha do Excel?

  2. Existe alguma maneira semelhante de alterar a cor da linha e o tipo de marcador de uma só vez (sem necessidade de marcador diferente para cada linha)?

Responder1

Sim, você pode formatar a espessura e a cor da linha.

Este código deve formatar a série 2:

Sub SetWeights()
ActiveChart.SeriesCollection(2).Select
With Selection.Format.Line
    .Visible = msoTrue
    .ForeColor.RGB = RGB(107, 197, 135)
    .Weight = 1
End With
End Sub

Você pode modificar o código para percorrer cada série e cada vez ler uma cor e um peso diferentes.

Você pode alterar o tipo de marcador adicionando uma linha como:

.MarkerStyle = -4142

As opções de estilo de marcador estão listadas aqui: https://msdn.microsoft.com/en-us/vba/excel-vba/articles/series-markerstyle-property-excel

Responder2

Ok, a seguinte macro (obtida emhttps://stackoverflow.com/questions/32437999/auto-adjust-excel-chart-line-weights-with-a-loop) responde à minha pergunta original.

Sub SetWeights()
    Dim Srs As Series
    Dim myWeight As Range
    Dim £w As Range
    Dim j As Long

    Set myWeight = Range("Weights")

    j = 1

    With ActiveSheet
        For Each £w In myWeight
            If j > ActiveChart.SeriesCollection.Count Then Exit Sub
            ActiveChart.SeriesCollection(j).Format.Line.Weight = £w
            j = j + 1
        Next £w
    End With
End Sub

... e sou capaz de traçar esse gráfico: Capaz de desenhar isso

Alguém pode fornecer alguma modificação nesta macro para que eu possa ter esse gráfico?

Novo gráfico esperado

Obrigado!

informação relacionada