我正在使用excel vba制作饼图,并且部分过程要求我调用函数SetSourceData并为其提供" Source"应该是Range类型的参数。我的源参数恰好是一个变体,我得到一个"类型不匹配"错误。我已经看到人们将变体作为源参数传递而不会出错。有办法解决吗?感谢。
这里有一些代码:
mychart.ChartType = xlPie
mychart.SetSourceData Source:=myVariant
myVariant包含类似" Apple"," Banana"," Pear"
等字符串答案 0 :(得分:1)
See here有关Chart.SetSourceData
方法的文档。源必须是Range对象。因此,如果您的变量评估为范围,那么您尝试执行的操作可能会起作用。
但是如果你的变体是一个字符串数组或其他东西(它可能是你的评论中所说的那样),那么它就不会起作用。
声明一个显式键入Range的变量,将数据存储在该变量中,并在Chart.SetSource
方法中使用它。如果您已将数据存储在变量数组中,则可以执行以下操作:
Dim wsChartSource as Worksheet
Dim rChartSource as Range
Set wsChartSource = ThisWorkbook.Sheets("Sheet Name")
With wsChartSource
'Resize Range object to the size of the array
Set rChartSource = .Range(.Cells(1, 1), .Cells(UBound(MyVariantArray), UBound(MyVariantArray, 2)))
'Write array to Range
rChartSource.Value2 = MyVariantArray
End With
'Now use Range object as source for chart
MyChart.SetSourceData Source:=rChartSource