График Excel: макрос для определяемой пользователем переменной толщины линии

График Excel: макрос для определяемой пользователем переменной толщины линии

У меня есть несколько рядов данных в графике, и я хочу, чтобы каждая из примерно 55 линий в графике имела разную толщину в зависимости от моего выбора. Я видел следующий макрос для настройки толщины всех линий за один раз.

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. Есть ли способ (макрос), чтобы каждая линия имела разную толщину, как определено в одном из столбцов на листе Excel?

  2. Есть ли аналогичный способ изменить цвет линии и тип маркера за один раз (не нужно использовать отдельный маркер для каждой линии)?

решение1

Да, вы можете форматировать толщину и цвет линии.

Этот код должен форматировать серию 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

Вы можете изменить код так, чтобы он проходил по каждой серии и каждый раз считывал другой цвет и вес.

Вы можете изменить тип маркера, добавив строку, например:

.MarkerStyle = -4142

Варианты стиля маркера перечислены здесь: https://msdn.microsoft.com/en-us/vba/excel-vba/articles/series-markerstyle-property-excel

решение2

Хорошо, следующий макрос (получен изhttps://stackoverflow.com/questions/32437999/auto-adjust-excel-chart-line-weights-with-a-loop) отвечает на мой первоначальный вопрос.

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

...и я могу построить такой график: Умею рисовать это

Может ли кто-нибудь внести какие-либо изменения в этот макрос, чтобы я мог получить такой график?

Новый ожидаемый график

Спасибо!

Связанный контент