2016-01-08 62 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 

結束子

我輸入樣本:

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

你見過這篇微軟文章嗎? https://support.microsoft.com/zh-cn/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 

...試圖標記系列,和失敗。

認識到這一代碼爲從「多系列氣泡圖」的另一個著名的例子是,它是一個邏輯的假設,我們只需要處理每系列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的情況下完成他們的目標,然後通過查看代碼來逆向設計過程。如果你同意,我將不勝感激。 –