VBA-将饼图的X值更改为非活动工作表中的范围

时间:2013-06-18 14:44:34

标签: excel vba excel-vba

这应该很容易,但我无法弄清楚语法。我想将PieChart的X值更改为等于B8:B12范围内的任何值。这是我设置PieChart的代码。

Set pie_chart = Charts.Add()
With pie_chart
    .ChartType = xlPie
    .SetSourceData Source:=new_sheet.Range("C2:C" & _
        num_bins + 1), _
        PlotBy:=xlColumns
    .Location Where:=xlLocationAsObject, _
        Name:=new_sheet.Name
End With

With ActiveChart
    .HasTitle = True
    .ChartTitle.Characters.Text = title
    .ApplyDataLabels Type:=xlDataLabelsShowLabelAndPercent, LegendKey _
    :=False, HasLeaderLines:=True
    .SeriesCollection(1).DataLabels.NumberFormat = "0.0%"
    .FullSeriesCollection(1).XValues = "=Content!$B$8:$B$12"
End With

需要更改的行是.FullSeriesCollection(1).XValues = "Content!$B$8:$B$12",因为代码生成了大量的工作表,而不是所有工作表都命名为内容。相反,我需要它从B8-B12中获取图表所在的工作表名称的X值。

如果有帮助,图表父图纸的名称将保存在变量new_sheet

我尝试了.FullSeriesCollection(1).XValues="new_sheet.Name!$B$8:$B$12".FullSeriesCollection(1).XValues=new_sheet.Name&"!$B$8:$B$12"

之类的内容

我不确定为什么这不起作用:.FullSeriesCollection(1).XValues = "=" & new_sheet.Name & "!$B$8:$B$12"

1 个答案:

答案 0 :(得分:2)

试试这个:

.SeriesCollection(1).XValues = "='" & new_sheet.Name & "'!$B$8:$B$12"

如果工作表.Name中有空格,您之前的尝试将构造格式错误的公式,这会导致错误,例如:

=My Worksheet!A1:B1是无效的引用,会导致#Name?错误。当工作表名称包含空格时,您需要将名称括在单引号中。因此,不要试图找出何时需要,只需使用单引号来避免此错误。