2016-01-08 5 views
1

Привет, я хочу добавить пользовательскую метку данных в свою диаграмму пузырьков. мой код ниже. на данный момент метка данных относится к XValues. Я бы хотел, чтобы моя метка данных заполнялась размером пузыря. не возражаете, помогите мне, как я могу настроить код ниже?Как добавить метку данных в диаграмму пузырьков в excel

Я пытался добавить .DataLabel.Text = «.txt», но я получил ниже ошибки: Ошибка выполнения «438»: Объект не поддерживает это свойство или метод

Public Sub CreateMultiSeriesBubbleChart() 
If (Selection.Columns.Count <> 4 Or Selection.Rows.Count < 3) Then 
    MsgBox "Selection must have 4 columns and at least 2 rows" 
    Exit Sub 
End If 

Dim red, green, blue As Integer 


Dim bubbleChart As ChartObject 
Set bubbleChart = ActiveSheet.ChartObjects.Add(Left:=Selection.Left, Width:=600, Top:=Selection.Top, Height:=400) 
bubbleChart.Chart.ChartType = xlBubble 
Dim r As Integer 

For r = 2 To Selection.Rows.Count 
    With bubbleChart.Chart.SeriesCollection.NewSeries 
     .Name = "=" & Selection.Cells(r, 1).Address(External:=True) 
     .XValues = Selection.Cells(r, 2).Address(External:=True) 
     .Values = Selection.Cells(r, 3).Address(External:=True) 
     .BubbleSizes = Selection.Cells(r, 4).Address(External:=True) 
     .Format.Fill.Solid 
     .Format.Fill.ForeColor.RGB = RGB(61, 161, 161) 
    ' .DataLabel.Text = "txt" 
    End With 

Next 

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

bubbleChart.Chart.SetElement (msoElementPrimaryValueAxisTitleRotated) 
bubbleChart.Chart.Axes(xlValue, xlPrimary).AxisTitle.Text = "=" & Selection.Cells(1, 3).Address(External:=True) 

bubbleChart.Chart.SetElement (msoElementPrimaryCategoryGridLinesMajor) 
bubbleChart.Chart.Axes(xlCategory).MinimumScale = 0 

End Sub

Мой вход образец:

Label   Hour Day count 
01-SUNDAY  14 1 1 
01-SUNDAY  19 1 1 
02-MONDAY  12 2 1 
02-MONDAY  13 2 1 
02-MONDAY  14 2 2 
02-MONDAY  16 2 2 
+1

Вы видели эту статью в Microsoft? https://support.microsoft.com/en-us/kb/914813 «Как использовать макрос VBA для добавления меток к точкам данных в диаграмме XY (разброс) или в пузырьковой диаграмме в Excel 2007» – Luuklag

+0

@luuklag: да, я сделал, поэтому я хочу проверить, как добавить .DataLabel.Text в мой код. Я новичок в VBA. – Amir

ответ

2

DataLabel.Text является метод для Point, не NewSeries

Этот код:

For r = 2 To Selection.Rows.Count 
    With bubbleChart.Chart.SeriesCollection.NewSeries 
     [...] 
     .DataLabel.Text = "txt" 
    End With 
Next 

... пытается маркировать серию, и выходит из строя.

Признавая этот код как от другого известного примера «мульти-серии Bubble Charts», то логично предположить, что нам нужно только обрабатывать 1 точку данных за серии, что делает следующий код решения:

For r = 2 To Selection.Rows.Count 
    With bubbleChart.Chart.SeriesCollection.NewSeries 
     [...] 
     .Points(1).HasDataLabel = True 
     .Points(1).DataLabel.Text = "txt" 
    End With 
Next 
0

без использования VBA, щелкните правой кнопкой мыши на пузырьках и выберите Добавить метки данных. Затем щелкните правой кнопкой мыши ярлыки данных и выберите «Формат данных». В разделе «Параметры метки» выберите «Значение из ячеек» и укажите ячейки, содержащие метки, которые вы хотите использовать.

+0

Если OP явно запрашивает решение VBA-кода, почему вы отправляете ответ не VBA? Он не спрашивает, как это можно сделать вообще, но конкретно, как это сделать с VBA. –

+0

@CindyMeister Потому что они могут, по-видимому, достичь своей цели, не используя VBA, а затем перепроектировать процесс, посмотрев код. Если вы согласитесь, я был бы признателен за голосование. –