【问题标题】:VBA Pie Chart Legend - How to set legend text?VBA 饼图图例 - 如何设置图例文本?
【发布时间】:2013-11-20 15:38:01
【问题描述】:

有人问了一个类似的问题 (Set Legend Text Pie Chart),但该解决方案对我不起作用,也许我遗漏了一些东西。我对使用 VBA/Excel/Access 和报告还很陌生,而且我的截止日期有限,所以我希望有人能启发我。

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

报告是在对应于 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 个值。我在这里错过了什么吗?用逗号分隔参数应该指示第一个范围作为我的图例,第二个作为我的数据源?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您可以使用 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) 这样的索引对象上

    【讨论】:

    • 谢谢 - 这正是我所需要的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 2019-06-10
    相关资源
    最近更新 更多