Hallo SH,
ich weiß nicht, ob dich bei meiner ersten Antwort oder jetzt richtig verstanden habe. Ich gehe jetzt davon aus, dass du ein eingebettetes Linien-Diagramm markiert hast und jetzt die Linien formatieren willst. Diese willst du nicht anklicken, sondern irgendwie anders festlegen, so dass du über Seriescollection(n) Zugriff hast. Dabei willst du sicher gehen, dass nur solche Datenreihen bearbeitet werden können, die auch existieren. Am einfachsten geht das m.E. mit On Error, denn wenn die Linie nicht existiert, wird ein Fehler ausgelöst. Ich habe dein Makro etwas verändert:
'If ActiveChart.SeriesCollection(1) = True Then
On Error GoTo keine_Linie
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).ApplyDataLabels AutoText:=True, ShowValue:=True
With Selection
.Border.ColorIndex = 4
.Border.Weight = xlMedium
.Border.LineStyle = xlContinuous
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlSquare
.MarkerSize = 5
End With
ActiveChart.SeriesCollection(1).DataLabels.Select
With Selection
.Position = xlLabelPositionBelow
End With
'Else
Exit Sub
keine_Linie:
MsgBox "Linie nicht vorhanden", vbInformation Or vbOKOnly, "Infobox"
'End If
on Error goto 0
Viel Erfolg
Holger
SH schrieb am 03.07.2008 08:29:53:
Hallo Holger,
vielen Dank für deine Hilfe.
Leider handelt es sich um ein eingebettetes Diagramm. Sorry, die Info hätte ich mitgeben sollen.
Vielen Dank und viele Grüße,
Sebastian
Holger schrieb am 02.07.2008 21:18:36:
Hallo SH,
ich gehe davon aus, dass es sich nicht um eingebettetes Diagramm, sondern um eine Chart handelt.
Dann kannst im Codeteil der Chart z.B.
Private Sub chart_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long)
If ElementID = xlSeries then
select case Arg1
case 1
'Deine Anweisungen für die 1. Datenreihe
case 2
'Deine Anweisungen für die 2. Datenreihe
...
case else
end select
end if
End Sub
verwenden. Vielleicht musst du noch etwas daran herumbasteln. Ich habe das Makro nicht ausprobiert.
Für ein eingebettetes Diagramm funktioniert es nicht. Dafür habe ich auch keine wirkliche Lösung. Falls du eine finden solltest, lasse sie dem Forum zukommen.
Gruß
Holger
SH schrieb am 02.07.2008 10:27:07:
Hallo zusammen,
ich habe nochmal eine Frage bezüglich einer Linie in einer mit VBA erstellten Grafik:
Ich möchte diese Linie formatieren, aber nur, wenn sie auch wirklich vorhanden ist.
Der Hintergrund dazu ist, dass ich dem Nutzer des Programms die Möglichkeit gebe aus sieben Optionen zu wählen, wenn er jedoch nur drei wählt, soll das Programm auch nur drei Linien anzeigen. Das funktioniert auch.
Nur das formatieren dieser Linien funktioniert nicht, VBA bricht das Berechnen des Codes an dieser Stelle ab.
Hier mein Code:
If ActiveChart.SeriesCollection(1) = True Then
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).ApplyDataLabels AutoText:=True, ShowValue:=True
With Selection
.Border.ColorIndex = 57
.Border.Weight = xlMedium
.Border.LineStyle = xlContinuous
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlSquare
.MarkerSize = 5
End With
ActiveChart.SeriesCollection(1).DataLabels.Select
With Selection
.Position = xlLabelPositionBelow
End With
Else
MsgBox "Linie nicht vorhanden", vbInformation Or vbOKOnly, "Infobox"
End If
Vielen Dank für eure Hilfe!!
Viele Grüße,
Sebastian |