Excel VBA更新气泡图动态系列

时间:2013-11-22 11:53:25

标签: excel vba charts

我在Excel中动态更改表格,并且需要一个气泡图表,即使数据发生变化,也会自动基于表格。关键是表中的每个ROW代表一个泡在系列图中的系列。

Series A   5   10    5%
Series B   4    8    3%
.
.

我理解如何在没有VBA的情况下使用动态范围进行冒泡,但由于我需要从我的研究中创建/更新动态系列,我需要使用VBA。我写了下面的代码但是收到错误消息,即使我已经检查了50次,但是找不到图表

我需要VBA代码,引用Sheet11上的现有图表,并根据表格更新(添加/编辑)。

我的代码:

Public Sub CreateMultiSeriesBubbleChart()
  Dim bubbleChart As ChartObject
  Set bubbleChart = Sheet11.ChartObjects("Chart 13") ''verified i have chart 13 on sheet 11

  Dim r As Integer
  For r = 2 To 201
    With bubbleChart.Chart.SeriesCollection.NewSeries
        .Name = "=" & Sheet11.Cells(r, 1).Address(External:=True)
        .XValues = Sheet11.Cells(r, 2).Address(External:=True)
        .Values = Sheet11.Cells(r, 3).Address(External:=True)
        .BubbleSizes = Sheet11.Cells(r, 4).Address(External:=True)
    End With
  Next

  bubbleChart.Chart.SetElement (msoElementPrimaryCategoryAxisTitleAdjacentToAxis)
  bubbleChart.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "=" & Sheet11.Cells(1, 2).Address(External:=True)

  bubbleChart.Chart.SetElement (msoElementPrimaryValueAxisTitleRotated)
  bubbleChart.Chart.Axes(xlValue, xlPrimary).AxisTitle.Text = "=" & Sheet11.Cells(1, 3).Address(External:=True)
  ''bubbleChart.Chart.Axes(xlValue).MinimumScaleIsAuto = True
  ''bubbleChart.Chart.Axes(xlValue).MaximumScaleIsAuto = True
  ''bubbleChart.Chart.SetElement (msoElementPrimaryCategoryGridLinesMajor)
End Sub

不幸的是,此代码在Set bubbleChart行上提供了“应用程序定义或对象定义错误”的错误。我可以使用非常相似的代码来创建一个新的图表,所以我认为其余的工作正常,但我不能引用现有的图表,这是我需要能够做的

1 个答案:

答案 0 :(得分:1)

您需要更改引用工作表的方式。使用Sheets("Sheet11")代替Sheet11

试试这个:

Set bubbleChart = Sheets("Sheet11").ChartObjects("Chart 13")

请注意,您可以通过这种方式调用名称或索引。例如:

Sheets("MySheetName").select

Sheets(11).select