2013-11-22 7 views
0

У меня динамически меняющаяся таблица в Excel, и вам нужно, чтобы пузырьковая диаграмма автоматически основывалась на таблице даже при изменении данных. Ключ состоит в том, что каждый ROW в таблице представляет собой серию, которая находится в пузырьковой диаграмме.Динамическая серия пузырьков Excel VBA update

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 строку: 'Application или объекта определяется ошибка'. Я могу использовать очень похожий код для создания новой диаграммы, поэтому я считаю, что все работает правильно, но я не могу ссылаться на существующую диаграмму, которую я должен уметь делать.

ответ

1

Вам необходимо изменить способ ссылки на ваш лист , Используйте Sheets("Sheet11") вместо Sheet11

Попробуйте это:

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

Обратите внимание, что вы можете назвать имя или индекс таким образом. Например:

Sheets("MySheetName").select 

или

Sheets(11).select 
Смежные вопросы