Diagramm verändern mit VBA
21.09.2003 00:12:44
Michael Rapp
Hallo Excel Freunde,
meine Versuche, bei einem Ring Diagramm das Erscheinungsbild per VBA zu ändern, sind auf Grund gelaufen.
Folgendes Problem: Ich bestimme verschiedene Teile des Diagramms von zuvor berechneten Zellen eines Tabellenblatts. Darunter die Eigenschaft .Border des Diagrammtextes. Da ich nicht bei allen Punkten einen Rahmen haben möchte, es aber keine unsichtbare Farbe gibt, schalte ich zusätzlich über .Boder.LineStyle mit True/False den Rahmen ein und aus. Das funktioniert.
Jetzt möchte ich das Gleiche mit der Eigenschaft Interior.Colorindex - also der Hintergrundfarbe des Textes - machen. Das funktioniert jedoch nicht. Vielleicht deshalb nicht, da hier der true/false Schalter der gleiche ist wie die Bestimmung der Farbe selbst. Folgendes passiert: Die Farbe aller einzelnen Diagrammpunkte wird bestimmt und bei dem zweiten Druchgang schalte ich die nicht benötigten Hintergründe aus, die übrigen haben jedoch erhalten dann die Standard Fabe Schwarz und nicht die vorher zugeordnete.
Sorry, ist etwas komliziert zu erklären.
Eine andere Besonderheit habe ich bei dem True/False Schalter festgestellt. Der funktioniert nur, wenn ich die Werte vorher als Boolean einlese und nicht wenn ich z.B. "True" direkt als String einlese. Gibt es da einen Trick?
Danke für Eure Mühe.
Michael
Hier der verwendete Code:
Sub ChangeDiagram()
Dim i As Integer 'Zähler
Dim intRow As Integer 'Zeilennummer auf dem Tabellenblatt
Dim chtAnimals As Chart 'Diagramm
Dim boolLineStyle(48) As Boolean 'True/False des Rahmens
Dim boolColorIndex(48) As Boolean 'True/False des Texthintergrundes
Set chtAnimals = Sheet29.ChartObjects("Chart 1").Chart
intRow = 146
For i = 1 To 48
boolLineStyle(i) = Sheet27.Range("EF" & intRow) 'Sichtbarkeit des Rahmens einlesen
boolColorIndex(i) = Sheet27.Range("EG" & intRow) 'Sichtbarkeit des Hintergrunds einlesen
With chtAnimals.SeriesCollection(7).Points(i).DataLabel
.Characters.Text = Sheet27.Range("EH" & intRow) 'Buchstaben der Tiere
.Font.ColorIndex = Sheet27.Range("EI" & intRow) 'Farbe der Tiere
.Border.ColorIndex = Sheet27.Range("EA" & intRow) 'Farbe des Rahmens
.Border.LineStyle = boolLineStyle(i) 'Abschalten der nicht benötigten Rahmen funktioniert gut
.Interior.ColorIndex = Sheet27.Range("EB" & intRow) 'Farbe der Füllung
.Interior.ColorIndex = boolColorIndex(i) 'Abschalten der nicht benötigten Hintergrundfarbe funktioniert nicht
End With
intRow = intRow + 1
Next i
End Sub