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