VBA饼图图例 - 如何设置图例文字?

时间:2013-11-20 04:44:20

标签: excel-vba vba excel

问了一个类似的问题(Set Legend Text Pie Chart),但解决方案对我不起作用,也许我错过了一些东西。我很擅长使用VBA / Excel / Access和报告,而且我的时间有限,所以我希望有人可以启发我。

我正在做的是使用从访问数据库中提取的值填充一系列单元格,然后根据这些单元格值以编程方式生成饼图。饼图非常简单,包含2个数据。我根据用户的选择生成1-4个。因此,例如,用户可以选择A,B,C和/或D,并且每个字母对应于包含#correct&的2个单元格列。每个图表的#of不正确

报告是在对应于A / B / C / D的循环(1到4)内生成的 我用来创建图表的代码如下所示:

Charts.Add
ActiveChart.ChartType = xlPie
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(Cells(20,shift(shiftIndex)), Cells(21, shift(shiftIndex))
ActiveChart.HasLegend = True

对于正确/不正确的值,使用范围B20:B21,C20:C21等说。问题是图例显示“1”& “2”作为标签,我希望它显示“正确”& “不正确”

在另一个问题中,该人建议使用语法:

ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("b6:c6," & "b" & x & ":c" & x)

其中b6将包含“正确”,而c6在我的情况下会为我的标签包含“不正确”,但是当我使用它时:

ActiveChart.SetSourceData Source:=Sheets("Sheet 1").Range("a26:a27, a20:a21")

a26包含“正确”,a27包含“不正确”和a20& a21包含我正确和不正确的值 - 它尝试使用饼图中的所有4个值。我在这里错过了什么吗?用逗号分隔参数应该指出第一个范围是我的图例,第二个范围是我的数据源?

1 个答案:

答案 0 :(得分:2)

您可以使用Series对象的XValues属性直接控制它...

假设图表中只有一个系列,请尝试:

Activechart.Seriescollection(1).XValues=Activesheet.Range("a26:a27")

进一步的提示是:

Dim chMyChart as Chart 
Dim chMySeries as Series

Set chMyChart = Activesheet.Activechart 
Set chMySeries = chMyChart.Seriescollection(1)

然后使用chMyChart代替有效图表,chMySeries代替ActiveChart等。

这样效率更高,但它也会激活vba的 Intellisense ,它会在您输入“。”后显示这些对象可用的所有属性的列表。 无论如何,对我来说,这似乎没有暴露在像Active???这样的对象或像chMyChart.SeriesCollection(1)

这样的索引对象上