代码之家  ›  专栏  ›  技术社区  ›  skkakkar

为自定义设置sparklegroup变量

  •  0
  • skkakkar  · 技术社区  · 7 年前

    我创建了一组列 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 回复  |  直到 7 年前
        1
  •  1
  •   chillin    7 年前

    根据文件( https://docs.microsoft.com/en-us/office/vba/api/excel.sparklinegroups ):

    “使用Range对象的SparkleGroups属性返回 父范围中现有的SparkleGroups集合。“

    简而言之,创建迷你图后,可以通过父区域访问它们。在您的案例中,这可能类似于: 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
    
    推荐文章