将变量传递给SetSourceData导致"类型不匹配"

时间:2014-10-01 18:18:18

标签: excel-vba charts type-conversion type-mismatch vba

我正在使用excel vba制作饼图,并且部分过程要求我调用函数SetSourceData并为其提供" Source"应该是Range类型的参数。我的源参数恰好是一个变体,我得到一个"类型不匹配"错误。我已经看到人们将变体作为源参数传递而不会出错。有办法解决吗?感谢。

这里有一些代码:

mychart.ChartType = xlPie
mychart.SetSourceData Source:=myVariant

myVariant包含类似" Apple"," Banana"," Pear"

等字符串

1 个答案:

答案 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
相关问题