Установите переменную SparklineGroup для настройки - PullRequest
0 голосов
/ 12 января 2019

Я создал группу столбцов sparklines в местоположении A1:A4, которые связаны с исходными данными в диапазоне Sheet2!B1:E4 согласно следующему коду:

Sub sparktry()
Range("$A$1:$A$4").SparklineGroups.Add Type:=xlSparkColumn, SourceData:= _
 "Sheet2!B1:E4"
End Sub

Теперь я бы хотел настроить эти свечи. Просто на простом примере. Цвет серии изменяется, чтобы столбцы отображались красным цветом вместо цвета по умолчанию. Пройдя через SO и выполнив поиск в Google, я смог заставить его работать со следующим кодом.

Sub Sparktest()
Dim mySG As SparklineGroup
Set mySG = Range("$A$1:$A$4").SparklineGroups.Add(Type:=xlSparkColumn, SourceData:= _
 "Sheet2!B1:E4")
With mySG
    .SeriesColor.Color = RGB(255, 0, 0)
End With
End Sub

Работает нормально и меняет цвет серии на красный. Мой вопрос в следующей строке кода:

Set mySG = Range("$A$1:$A$4").SparklineGroups.Add(Type:=xlSparkColumn, SourceData:= _
 "Sheet2!B1:E4")

Я могу добиться успеха, написав только эту строку кода. Так как я уже создал спарклайны в первой подпрограмме, каков правильный синтаксис кода для установки mySG или он должен быть только таким.

1 Ответ

0 голосов
/ 12 января 2019

Согласно документации (https://docs.microsoft.com/en-us/office/vba/api/excel.sparklinegroups):

"Используйте свойство SparklineGroups объекта Range для возврата существующей коллекции SparklineGroups из родительского диапазона. "

Короче говоря, после того как вы создали спарклайны, вы можете получить к ним доступ через родительский диапазон. В вашем случае это может быть что-то вроде: Set mySG = Range("A1:A4").SparklineGroups.Item(1)

Ниже приведено то, что я могу понять из вашего кода, регистратора макросов и документации (см. Комментарии в коде).

Option Explicit

Private Sub SomeSparklines()
    With ThisWorkbook.Worksheets("Sheet1")

        ' Refer to the sparkline group as soon as you create it.
        With .Range("$A$1:$A$4").SparklineGroups.Add(Type:=xlSparkColumn, SourceData:="B1:E4")
            .SeriesColor.Color = vbYellow
        End With

        ' Loop through existing sparkline groups on Sheet1
        ' gaining access to the sparkline group via
        ' the variable you're looping with.
        Dim sparkGroup As SparklineGroup
        For Each sparkGroup In .Cells.SparklineGroups
            sparkGroup.SeriesColor.Color = vbRed
        Next sparkGroup

        ' Manipulate a specific sparkline group in
        ' cell A1 of worksheet Sheet1. For me, this manipulates
        ' the entire group (not just the sparkline in cell A1)
        With .Range("A1").SparklineGroups.Item(1)
            .SeriesColor.Color = vbBlack

            ' Do whatever stuff needs doing....
            With .Points.Highpoint
                .Visible = True
                .Color.Color = vbGreen
            End With
            With .Points.Lowpoint
                .Visible = True
                .Color.Color = vbRed
            End With
        End With
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...