Blasendiagramm per Makro
20.02.2014 15:21:16
Max
ich steh seit ein paar Stunden vor einem Rätsel.
Da es in Excel selber ja leider nicht die Möglichkeit gibt, bei einem Blasendiagramm die Legende sinnvoll zu beschriften, habe ich mir im Internet ein Makro gesucht.
Dieses sieht wie folgt aus:
Option Explicit
Public Sub Blasendiagramm_mit_Reihe_je_Zeile()
' Erzeugt aus selektierten Daten ein Blasendiagramm mit einer Reihe pro Zeile
' Selektion muss beinhalten:
' 1. Zeile Spalten-Überschriften (werden für Diagrammbeschriftung vorgeschlagen)
' 1. Spalte Kategorien (Beschriftung für Legende, je Kategorie wird eine Datenreihe _
erzeugt
' 2. Spalte X-Werte
' 3. Spalte Y-Werte
' 4. Spalte Blasengröße
Dim Daten As Range, wks As Worksheet, Reihe As Series
Dim i As Long
Set wks = ActiveSheet
Set Daten = Selection
Charts.Add
ActiveChart.ApplyCustomType ChartType:=xlBubble
ActiveChart.Location Where:=xlLocationAsNewSheet
With wks
ActiveChart.SetSourceData Source:=.Range(.Cells(Daten.Row + 1, Daten.Column), _
.Cells(Daten.Row + Daten.Rows.Count - 1, Daten.Column + 3)), PlotBy:=xlRows
End With
Application.ScreenUpdating = False
For i = ActiveChart.SeriesCollection.Count To 2 Step -1
ActiveChart.SeriesCollection(i).Delete
Next
For i = 1 To Daten.Rows.Count - 1
Set Reihe = ActiveChart.SeriesCollection(i)
With Reihe
.Name = "=" & wks.Name & "!R" & Daten.Row + i & "C" & Daten.Column
.XValues = "=" & wks.Name & "!R" & Daten.Row + i & "C" & Daten.Column + 1
.Values = "=" & wks.Name & "!R" & Daten.Row + i & "C" & Daten.Column + 2
.BubbleSizes = "=" & wks.Name & "!R" & Daten.Row + i & "C" & Daten.Column + 3
'.ApplyDataLabels Type:=xlDataLabelsShowBubbleSizes 'Wert Blasengröße wird angezeigt
End With
If i Daten.Rows.Count - 1 Then
ActiveChart.SeriesCollection.NewSeries
End If
Next
Application.ScreenUpdating = True
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = InputBox("Diagrammtitel", "Neues Diagramm", Daten(1, 4))
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = InputBox("Beschriftung X-Achse: _
", "Neues Diagramm", Daten(1, 2))
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = InputBox("Beschriftung Y-Achse:", _
"Neues Diagramm", Daten(1, 3))
End With
End Sub
Soweit so gut, allerdings wirft die Zeile.Name = "=" & wks.Name & "!R" & Daten.Row + i & "C" & Daten.Column
immer den Laufzeitfehler 1004 aus. Im Lokalfenster kann ich auch sehen, dass "Reihe" nicht definiert ist. Kommentiere ich diese Zeile aus, läuft das Makro ohne Beanstandung durch. Nur dann werden die Datenreihen nicht benannt...
Hoffe mir kann jemand helfen.
Vielen Dank schon mal im Voraus.
Max