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

2 ответа2

0

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

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

0

Хорошо, следующий макрос (полученный из 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

... и я могу построить такой график:можно нарисовать

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

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

Спасибо!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .