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