我在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行上提供了“应用程序定义或对象定义错误”的错误。我可以使用非常相似的代码来创建一个新的图表,所以我认为其余的工作正常,但我不能引用现有的图表,这是我需要能够做的
答案 0 :(得分:1)
您需要更改引用工作表的方式。使用Sheets("Sheet11")
代替Sheet11
试试这个:
Set bubbleChart = Sheets("Sheet11").ChartObjects("Chart 13")
请注意,您可以通过这种方式调用名称或索引。例如:
Sheets("MySheetName").select
或
Sheets(11).select