Почему при использовании набора диаграмм VBA AxisGroup снижает эффективность кода? - PullRequest
0 голосов
/ 22 октября 2018
Private Sub FormatSeries()
    Dim cht As ChartObject, n As Integer, ser As Series, pts As Points
    Set cht = Sheets("ChartTool").ChartObjects("MyChart")

    For Each ser In cht.Chart.SeriesCollection
        'Set Series AxisGroup
         ser.AxisGroup = xlPrimary

        'Set Series MarkerStyle
        ser.MarkerStyle = xlMarkerStyleNone

        'Set Series Line weight, color, style
        With ser.Format
            .Line.Visible = msoTrue
            .Line.Weight = 2.5
            .Line.ForeColor.RGB = GetChartSeriesColor(ser.Name)
        End With

        'Set Series DataLabel: put series name on the last point
        Set pts = ser.Points
        With pts(pts.Count)
            .ApplyDataLabels Type:=xlDataLabelsShowValue, AutoText:=True, LegendKey:=False
            .DataLabel.Text = ser.Name
        End With
    Next
End Sub

В этой диаграмме к ней прикреплено около 200+ серий.Я использую код VBA для форматирования каждой серии на основе некоторых правил.Код работает.Единственная запутанная часть - если я уберу установленную инструкцию AxisGroup, скорость этого сабвуфера значительно увеличится, время выполнения меньше 2 с.Однако, если я верну код ser.AxisGroup = xlPrimary, эта процедура займет около 20 секунд +, не знаю почему.Кто-нибудь может дать некоторые объяснения?спасибо

...