2014-10-01 68 views
0

我正在使用excel vba制作饼图,部分过程需要我调用SetSourceData函数并为其提供“Source”参数,该参数应该是类型的范围。我的源参数碰巧是一个变体,而我得到一个“类型不匹配”错误。我已经看到人们通过变体作为源参数,并没有得到一个错误。有没有办法解决它?谢谢。将变量传递给SetSourceData导致“类型不匹配”

下面是一些代码:

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

myVariant包含像 “苹果”, “香蕉”, “梨花”

+0

您是否尝试过将变量先传递给Range变量,然后将其用作源代码? – 2014-10-01 18:58:47

+0

什么*确切*在myVariant中? myVariant包含字符串,例如 – Rory 2014-10-01 19:12:18

+0

。 “苹果”,“香蕉”,“梨” – animalcroc 2014-10-01 19:13:08

回答

1

See here有关Chart.SetSourceData方法的文档字符串。源必须是Range对象。因此,如果你的变体评估为一个范围,你可能会试图做的工作。

但是,如果你的变体是一个字符串或其他东西的数组(它听起来像你的评论可能是),那么不,它不会工作。

声明一个明确键入为Range的变量,将数据存储在该变量中,然后在您的方法中使用该变量。如果您已经将数据存储在变量数组中,则可以执行以下操作:

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