Anzeige
Archiv - Navigation
1100to1104
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Per VBA Serien Diagramme erstellen
Axel
Hallo,
ich habe ein Problem welches ich noch nicht ganz nachvollziehen kann:
Ich lasse eine Excel Diagramm aus drei Reihen erstellen, wobei ich die Linienstärke einstelle und einen Achsenbezeichnung hinzufüge.
Jetzt das Problem:
Manchmal funktioniert das Skript und manchmal nicht, ich verstehe nur nicht warum das so ist.
Sub auto()
'bestehenedes Diagramm löschen mit vorheriger Abfrage ob es existiert
For i = 1 To Worksheets.Count
If Sheets(i).Name = "Ergebnis" Then
Application.DisplayAlerts = False
Charts("Ergebnis").Delete
Application.DisplayAlerts = True
End If
Next
'neues Diagramm hinzufügen
Charts.Add
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
ActiveChart.SeriesCollection(1).Values = "='Auswahl_Ergebnis'!$H$3:$H$626"
ActiveChart.SeriesCollection(1).Name = "='Auswahl_Ergebnis'!C3"
ActiveChart.SeriesCollection(1).Border.Weight = 3
ActiveChart.SeriesCollection(2).Values = "='Auswahl_Ergebnis'!$H$627:$H$1250"
ActiveChart.SeriesCollection(2).Name = "='Auswahl_Ergebnis'!$C$627"
ActiveChart.SeriesCollection(2).Border.Weight = 3
ActiveChart.SeriesCollection(3).Values = "='Auswahl_Ergebnis'!$H$1250:$H$1874"
ActiveChart.SeriesCollection(3).Name = "='Auswahl_Ergebnis'!$C$1250"
ActiveChart.SeriesCollection(3).Border.Weight = 3
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Ergebnis"
ActiveChart.Axes(xlCategory).HasTitle = True
ActiveChart.Axes(xlCategory).AxisTitle.Text = "Date"
ActiveChart.Axes(xlValue).HasTitle = True
ActiveChart.Axes(xlValue).AxisTitle.Text = "Auto"
End Sub
Jetzt meine Fragen:
1. Wieso funktioniert das Skript manchmal nicht? Excel gibt mir dann den Laufzeitfehler ' _ 1004' aus, in dieser Zeile:

ActiveChart.SeriesCollection(1).Values = "='Auswahl_Ergebnis'!$H$3:$H$626"

2. Wieso entspricht die Linienstärke des Diagramms nicht meinem eingestellten Wert von 3?
3. Wie kann ich die Schriftgröße im gesamten Diagramm auf 16 setzen?
Danke für eure Hilfe!
Axel
PS.: Der Excel interne Rekorder zeichnet keine händisch durchgeführten Änderungen auf...

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Per VBA Serien Diagramme erstellen
11.09.2009 01:58:00
fcs
Hallo Axel,
die beschriebenen Probleme tauchen auf, wenn Excel aus den zum Zeitpunkt des Makrostarts selektierten Zellen ein Diagramm automatisch generiert, das nur 0 bis 2 Datenreihen enthält. z.B. wenn eine leere Zelle selektiert ist. D.h. in deinem Fall, es sollen der Reihe 1, die nicht vorhanden ist, Werte zugewiesen werden, was dann zum Fehler führt.
Ich hab eine Prüfung eingebaut, ob jeweils noch eine Datenreihe vorhanden ist und bei Bedarf wird eine weitere Reihe angelegt.
Unter VBA kann man der Linienstärke von Borders nur 4 verschieden Werte zuweisen. 3 gehört nicht dazu. Wahrscheinlich ein Kompromiss, den man nicht geändert hat um kompatibel zu früheren Versionen zu sein, oder einfach ein Bug im VBA-Objektmodel. Denn von Hand kann man die Linienbreite ja in einem weiten Bereich ändern.
Die Schriftgröße aller Elemente eines Diagramms kann man ändern, wenn man den äußeren Rahmen des Diagramms selektiert (zumindest unter Excel 2007) und dann die Schriftformatierung anpasst. Ansonsten kann man natürlich auch alle Elemente individuell formatieren.
Gruß
Franz
Sub auto()
Dim i As Integer
'bestehenedes Diagramm löschen mit vorheriger Abfrage ob es existiert
For i = 1 To ActiveWorkbook.Sheets.Count 'Sheets statt Worksheets !!
If Sheets(i).Name = "Ergebnis" Then
Application.DisplayAlerts = False
Charts("Ergebnis").Delete
Exit For                          'Nach dem Löschen Schleife verlassen!!
Application.DisplayAlerts = True
End If
Next
'neues Diagramm hinzufügen
Charts.Add
With ActiveChart
.ChartType = xlXYScatterSmoothNoMarkers
If .SeriesCollection.Count = 0 Then .SeriesCollection.NewSeries
With .SeriesCollection(1)
.Values = "='Auswahl_Ergebnis'!$H$3:$H$626"
.Name = "='Auswahl_Ergebnis'!C3"
.Border.Weight = xlThick '(4), xlhairline (1), xlThin (2), xlMedium (-4138)
End With
If .SeriesCollection.Count = 1 Then .SeriesCollection.NewSeries
With .SeriesCollection(2)
.Values = "='Auswahl_Ergebnis'!$H$627:$H$1250"
.Name = "='Auswahl_Ergebnis'!$C$627"
.Border.Weight = xlThick
End With
If .SeriesCollection.Count = 2 Then .SeriesCollection.NewSeries
With .SeriesCollection(3)
.Values = "='Auswahl_Ergebnis'!$H$1250:$H$1874"
.Name = "='Auswahl_Ergebnis'!$C$1250"
.Border.Weight = xlThick
End With
.Location Where:=xlLocationAsNewSheet, Name:="Ergebnis"
.Axes(xlCategory).HasTitle = True
'      .Axes(xlCategory).TickLabels.Font.Size = 16
With .Axes(xlCategory).AxisTitle
.Text = "Date"
'        .Font.Size = 16
End With
.Axes(xlValue).HasTitle = True
'      .Axes(xlValue).TickLabels.Font.Size = 16
With .Axes(xlValue).AxisTitle
.Text = "Auto"
'        .Font.Size = 16
End With
'      .Legend.Format.TextFrame2.TextRange.Font.Size = 16
'Schriftgröße im Diagramm generell ändern
.ChartArea.Format.TextFrame2.TextRange.Font.Size = 16
End With
End Sub

Anzeige
AW: Per VBA Serien Diagramme erstellen
12.09.2009 08:34:59
Axel
Hallo Franz, dein Skript funktioniert super!
Mit deinen Erläuterungen habe ich sogar meine Fehler verstanden ;)
Vielen Dank.
Gruß
Axel

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige