Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kartendiagramm per VBA erstellen und formatieren

Kartendiagramm per VBA erstellen und formatieren
24.09.2019 17:42:24
Peter
Hi Zusammen,
ich bin noch recht neu im Umgang mit VBA und versuche noch viel über den Makro-Rekorder zu arbeiten und den Code dann anzupassen. Bisher hat das auch ganz gut geklappt allerdings bin ich nun bei folgenden Problem angekommen.
Ich möchte per Makro ein Kartendiagramm erstellen und formatieren. Das erstellen klappt auch allerdings gibt es bei der Formatierung ein paar Schritte die einfach nicht klappen. Auch mit Google-Recherche konnte ich leider keine passenden Lösungen finden und hoffe nun auf eure Hilfe.
Folgende Sachen klappen nicht:
- Der Hintergrund des Diagrammbereich soll durchsichtig sein
- der Rahmen des Diagrammbereich soll entfernt werden
Hier mein Code für das Diagramm:
Public Sub Kartendiagramm_BL()
Dim wks As Worksheet
Set wks = Worksheets("Diagramme")
wks.Range("N5:O21").Select
'da der Code: ActiveChart.SetSourceData Source:=Range("...")  _
nicht geht habe ich  es notgezwungen über Select gelöst. In den Bereich _
befinden sich in Spalte N die Bundesländer und in Spalte O dazugehörige Werte.
wks.Shapes.AddChart2(494, xlRegionMap).Name = "Kartendiagramm"
wks.Shapes("Kartendiagramm").Select
wks.ChartObjects("Kartendiagramm").Activate
ActiveChart.SetElement (msoElementChartTitleNone)
ActiveChart.Legend.IncludeInLayout = False
ActiveChart.FullSeriesCollection(1).ApplyDataLabels
Application.CutCopyMode = False
ActiveChart.FullSeriesCollection(1).Name = " "
With wks.Shapes("Kartendiagramm")
.Top = 370
.Left = 730
End With
ActiveChart.ChartArea.FOrmat.Fill.Visible = msoFalse
ActiveSheet.Shapes("Kartendiagramm").Fill.Visible = msoFalse
'soll den Hintergrund durchsichtig machen aber funktioniert hier nicht 
ActiveSheet.Shapes("Kartendiagramm").Line.Visible = msoFalse
'soll den Rahmen entfernen aber führt dazu, dass in den _
Formatierungseigenschaften unter Rahmen: "keine Linie" steht. Aber es wird _
trotzdem eine Linie noch angezeigt.
With ActiveChart.FullSeriesCollection(1)
.FOrmat.Line.ForeColor.RGB = RGB(0, 0, 0)
.SeriesColorMaxGradientStop.StopColor.RGB = 411284
.SeriesColorMaxGradientStop.StopColor.TintAndShade = 0
.SeriesColorMaxGradientStop.StopColor.Transparency = 0
.SeriesColorMinGradientStop.StopColor.RGB = RGB(255, 255, 255)
.SeriesColorMinGradientStop.StopColor.TintAndShade = 0
.SeriesColorMinGradientStop.StopColor.Transparency = 0
End With
End Sub
Hat jemand eine Idee wo der Fehler ist und wie man den Diagrammbereich für dieses Diagramm korrekt anspricht, um den Hintergrund und Rahmen zu entfernen?
Danke

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kartendiagramm per VBA erstellen und formatieren
25.09.2019 14:49:52
fcs
Hallo Peter,
merkwürdiger Weise funktioniert es unter VBA nur, wenn man mit der Transparenz arbeitet und diese für die Solid-Form auf 1 (=100%) setzt.
Zur einfacheren Programmierung hab ich eine Variable deklariert, die das Chart-Objekt repräsentiert.
LG
Franz

Public Sub Kartendiagramm_BL()
Dim wks As Worksheet
Dim objChart As Chart
Set wks = Worksheets("Diagramme")
wks.Range("N5:O21").Select
'da der Code: ActiveChart.SetSourceData Source:=Range("...") _
nicht geht habe ich  es notgezwungen über Select gelöst. In den Bereich _
befinden sich in Spalte N die Bundesländer und in Spalte O dazugehörige Werte.
wks.Shapes.AddChart2(494, xlRegionMap).Name = "Kartendiagramm"
Set objChart = wks.ChartObjects("Kartendiagramm").Chart
'    wks.ChartObjects("Kartendiagramm").Activate
objChart.SetElement (msoElementChartTitleNone)
objChart.Legend.IncludeInLayout = False
objChart.FullSeriesCollection(1).ApplyDataLabels
objChart.FullSeriesCollection(1).Name = " "
With wks.Shapes("Kartendiagramm")
.Top = 370
.Left = 730
End With
With objChart.ChartArea.Format.Fill 'soll den Hintergrund durchsichtig machen
.Solid
.ForeColor.RGB = VBA.RGB(255, 255, 255) 'weiß
.Transparency = 1
End With
With objChart.ChartArea.Format.Line 'soll den Rahmen entfernen
.Style = msoLineSingle
.Transparency = 1
End With
With objChart.FullSeriesCollection(1)
.Format.Line.ForeColor.RGB = RGB(0, 0, 0)
.SeriesColorMaxGradientStop.StopColor.RGB = 411284
.SeriesColorMaxGradientStop.StopColor.TintAndShade = 0
.SeriesColorMaxGradientStop.StopColor.Transparency = 0
.SeriesColorMinGradientStop.StopColor.RGB = RGB(255, 255, 255)
.SeriesColorMinGradientStop.StopColor.TintAndShade = 0
.SeriesColorMinGradientStop.StopColor.Transparency = 0
End With
End Sub

Anzeige
AW: Kartendiagramm per VBA erstellen und formatieren
26.09.2019 15:56:54
Peter
Hi Franz,
super vielen Dank für den Tipp.
Funktioniert wunderbar.
VG
Peter
AW: Kartendiagramm per VBA erstellen und formatieren
26.09.2019 16:55:56
Peter
noch eine Frage: Ich habe nun versucht auf diese Weise die Schriftart der Legend auf weiß zu ändern.
With objChart.Legend.LegendEntries(1).FOrmat.TextFrame2.TextRange.Font
.Fill.ForeColor.RGB = VBA.RGB(255, 255, 255)
.Fill.Transparency = 0
.Fill.Solid
End With
Wenn ich in die Eigenschaften der Legende schaue, dann ist die Farbe auch geändert, aber im Diagramm ist das nicht sichtbar und die Farbe ist weiterhin eine andere. Muss da noch etwas hinzugefügt werden oder ist es erneut der falsche Weg?
Danke
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige