VBA AutoShapeType игнорируется при запуске макроса - PullRequest
0 голосов
/ 19 февраля 2020

У меня следующий код vba:

Dim targetChart As Chart
Dim labelRange As Range

Set targetChart = Worksheets("Graph").ChartObjects("Chart 2").Chart
Set labelRange = Worksheets("Graph").Range("H3", "H" & lastrow)

With targetChart.SeriesCollection(4)
        .ApplyDataLabels
        With .DataLabels
            .Format.AutoShapeType = msoShapeRoundedRectangle
            .Format.TextFrame2.TextRange.InsertChartField msoChartFieldRange, labelRange.Address(External:=True), 0
            .ShowCategoryName = False
            .ShowRange = True
            .ShowSeriesName = False
            .ShowValue = False
        End With
    End With

Я хочу отформатировать метки данных в виде прямоугольников со скругленными углами, но при запуске макроса .Format.AutoShapeType = msoShapeRoundedRectangle не выполняется. Когда я выполняю макрос, он не выдает ошибку, поэтому я не уверен, что делаю неправильно. Все остальное в операторе with работает как задумано.

Причина, по которой у меня есть .ShowValue = False, заключается в том, что я устанавливаю значения меток данных из диапазона.

Ответы [ 2 ]

2 голосов
/ 19 февраля 2020

Попробуйте это:

targetChart.FullSeriesCollection(1).ApplyDataLabels
    With targetChart.FullSeriesCollection(1).DataLabels
    .ShowRange = True
    .ShowValue = False
    .Format.AutoShapeType = msoShapeRoundedRectangle
    .Format.TextFrame2.TextRange.InsertChartField msoChartFieldRange, labelRange.Address(External:=True), 0
    .Format.Fill.Visible = msoTrue
    .Format.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent2
    .Format.Fill.ForeColor.TintAndShade = 0.5
    .Format.Fill.ForeColor.Brightness = 0
    .Format.Fill.Solid
End With
0 голосов
/ 19 февраля 2020

В справке Excel говорится, что DataLabels.Format (вся коллекция DataLabels) и DataLabel.Format (одна DataLabel) только для чтения . Может быть, то, что ты пытаешься, не может быть сделано.

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