是否可以使用数组作为 Sparkline.Sourcedata 和 VBA 的输入?

Is it possible to use an array as input of Sparkline.Sourcedata with VBA?

我想使用数组而不是范围作为迷你图的数据输入。

而不是这个:

Range("F2").SparklineGroups.Add Type:=xlSparkColumn, SourceData:="A2:E2"

像这样:

Range("F2").SparklineGroups.Add Type:=xlSparkColumn, SourceData:=Array(1,2,3,4)

Is it possible to use an array as input of SparkLine SourceData with VBA?

没有. - 由于help 所需的 SourceData 字符串 “表示用于创建迷你图的 范围 。”

所以你必须使用字符串类型的范围引用, 但是您可以使用目标和数组参数调用子过程 将数组值插入前面的单元格作为解决方法:

Sub ExampleCall()
    Dim arr: arr = Array(1, 2, 3, 4, 5)
    AddSparkLine Sheet1.Range("F2"), arr
End Sub

Sub AddSparkLine(target As Range, arr)
'a) count zero-based array elements
    Dim n As Long: n = UBound(arr) + 1
'b) define data range
    Dim dataRng As Range: Set dataRng = target.Offset(, -n).Resize(1, n)
'c) write array to data range
    dataRng = arr
'd) define SourceData string
    Dim srcData As String: srcData = target.Parent.Name & "!" & dataRng.Address
'e) insert spark lines
    target.SparklineGroups.Add Type:=xlSparkColumn, SourceData:=srcData
End Sub