Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1312to1316
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
Inhaltsverzeichnis

Chart Farbe funktioniert nicht mehr in Excel 2010

Chart Farbe funktioniert nicht mehr in Excel 2010
27.05.2013 09:18:54
Rosenwasser
Hallo,
Unterstehenden Code (welche von hier kommt) hat in Excel 2003 immer funktioniert.
Beim umschalten nach Excel 2010 bleibt mein Programm hängen auf Linie "ActiveChart.SeriesCollection(1).Select"
Ich habe schon auf Internet gesucht aber nichts gefunden.
Wer kann mir hier weiter helfen?
Vielen dank & Gruß,
Benny
Sub BalkenKleur()
Dim i As Integer
Dim x As Integer
ActiveChart.SeriesCollection(1).Select
With Selection.Border
.Weight = xlHairline
.LineStyle = xlNone
End With
Selection.Shadow = False
Selection.InvertIfNegative = False
With ActiveChart.ChartGroups(1)
.Overlap = 0
.GapWidth = 0
.HasSeriesLines = False
.VaryByCategories = False
End With
On Error GoTo ERRORHANDLER
Application.ScreenUpdating = False
ActiveChart.SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowValue, _
AutoText:=True
For x = 1 To ActiveChart.SeriesCollection.Count
For i = 1 To ActiveChart.SeriesCollection(x).Points.Count
ActiveChart.SeriesCollection(x).Points(i).DataLabel.Select
If CDbl(Selection.Text) = "5" Then
ActiveChart.SeriesCollection(x).Points(i).Interior.ColorIndex = 3
ElseIf CDbl(Selection.Text) >= "4,5" Then
ActiveChart.SeriesCollection(x).Points(i).Interior.ColorIndex = 3
ElseIf CDbl(Selection.Text) >= "4" Then
ActiveChart.SeriesCollection(x).Points(i).Interior.ColorIndex = 22
ElseIf CDbl(Selection.Text) >= "3,5" Then
ActiveChart.SeriesCollection(x).Points(i).Interior.ColorIndex = 46
ElseIf CDbl(Selection.Text) >= "3" Then
ActiveChart.SeriesCollection(x).Points(i).Interior.ColorIndex = 45
ElseIf CDbl(Selection.Text) >= "2,5" Then
ActiveChart.SeriesCollection(x).Points(i).Interior.ColorIndex = 40
ElseIf CDbl(Selection.Text) >= "2" Then
ActiveChart.SeriesCollection(x).Points(i).Interior.ColorIndex = 44
ElseIf CDbl(Selection.Text) >= "1,5" Then
ActiveChart.SeriesCollection(x).Points(i).Interior.ColorIndex = 36
ElseIf CDbl(Selection.Text) >= "1" Then
ActiveChart.SeriesCollection(x).Points(i).Interior.ColorIndex = 50
ElseIf CDbl(Selection.Text) >= "0,5" Then
ActiveChart.SeriesCollection(x).Points(i).Interior.ColorIndex = 43
End If
Next i
Next x
ActiveChart.SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowNone, _
AutoText:=True
Application.ScreenUpdating = True
Exit Sub
ERRORHANDLER:
MsgBox "De procedure is vastgelopen"
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Chart Farbe funktioniert nicht mehr in Excel 2010
27.05.2013 10:10:06
fcs
Hallo Benny,
ich hab dein Makro unter Excel 2010 getestet. Grundsätzlich funktioniert es.
Vor der Ausführung des Makros muss das entsprechende Diagrammblatt aktiv sein oder, wenn das Diagramm in eine Tabellenblatt eingebettet ist, es muss das Diagramm selektiert sein, dessen Farben angepasst werden sollen.
Falls du zum Starten des Makros eine Schaltfläche aus den Active-X-Steuerelementen benutzt, dann muss deren Eigenschaft "TakeFocusOnClick" auf False eingestellt werden., sonst verliert das Diagramm seinen Fokus und das Makro läuft in einen Fehler.
Gruß
Franz

Anzeige
AW: Chart Farbe funktioniert nicht mehr in Excel 2010
27.05.2013 14:34:14
Rosenwasser
Hallo Franz,
Danke für dein Antwort.
Den Macro lauft durch klicken von einen Button aus die normale Excel Steuerelementen.
Der Code lauft jetzt, aber es dauert unheimlich lang (2 bis 3 Minuten) er die Grafik erscheint, das war bei Excel 2003 nicht den Fall, da hat es ungefähr 10 Sek. gedauert.
Woran kann das noch liegen?
Gruß,
Benny

AW: Chart Farbe funktioniert nicht mehr in Excel 2010
28.05.2013 07:06:04
fcs
Hallo Benny,
was genau das Problem ist kann ich nicht sagen.
Evtl. hilft es, während der Makroausführung zusätzlich zur Bildschirmaktualisierung zeitweise auch die Ereignismakros zu deaktivieren und den Berechnungsmodus auf manuell zu setzen.
Ergänzend kann man ähnlich wie in Beverly's Vorschlag auch auf die vielen Select-Anweisungen verzichten und direkt die Objekte-Verwenden.
Gruß
Franz
Sub BalkenKleur_Neu()
Dim i As Integer
Dim x As Integer
Dim objChart As Chart
On Error GoTo ERRORHANDLER
'   Set objChart = ActiveSheet 'wenn Diagramm auf Diagrammblatt
'   Set objChart = ActiveSheet.ChartObjects(1).Chart 'wenn Diagrammfläche auf Tabellenblatt  _
selektiert
Set objChart = Selection.Parent 'wenn 1. Diagramm auf Tabellenblatt
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
With objChart
With .SeriesCollection(1)
With .Border
.Weight = xlHairline
.LineStyle = xlNone
End With
.Shadow = False
.InvertIfNegative = False
End With
With .ChartGroups(1)
.Overlap = 0
.GapWidth = 0
.HasSeriesLines = False
.VaryByCategories = False
End With
.SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowValue, _
AutoText:=True
For x = 1 To .SeriesCollection.Count
For i = 1 To .SeriesCollection(x).Points.Count
With .SeriesCollection(x).Points(i)
If CDbl(.DataLabel.Text) = "5" Then
.Interior.ColorIndex = 3
ElseIf CDbl(.DataLabel.Text) >= "4,5" Then
.Interior.ColorIndex = 3
ElseIf CDbl(.DataLabel.Text) >= "4" Then
.Interior.ColorIndex = 22
ElseIf CDbl(.DataLabel.Text) >= "3,5" Then
.Interior.ColorIndex = 46
ElseIf CDbl(.DataLabel.Text) >= "3" Then
.Interior.ColorIndex = 45
ElseIf CDbl(.DataLabel.Text) >= "2,5" Then
.Interior.ColorIndex = 40
ElseIf CDbl(.DataLabel.Text) >= "2" Then
.Interior.ColorIndex = 44
ElseIf CDbl(.DataLabel.Text) >= "1,5" Then
.Interior.ColorIndex = 36
ElseIf CDbl(.DataLabel.Text) >= "1" Then
.Interior.ColorIndex = 50
ElseIf CDbl(.DataLabel.Text) >= "0,5" Then
.Interior.ColorIndex = 43
End If
End With
Next i
Next x
.SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowNone, _
AutoText:=True
End With
ERRORHANDLER:
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
If Err.Number  0 Then
MsgBox "De procedure is vastgelopen" & vbLf _
& "Fehler-Nr.: " & Err.Number & vbLf & Err.Description
End If
End Sub

Anzeige
AW: Chart Farbe funktioniert nicht mehr in Excel 2010
28.05.2013 09:21:33
Rosenwasser
Hey Franz,
Vielen dank für die Code, es hat mir viel weiter geholfen.
Alles lauft auf meinen Computer wieder nach Wunsch!
Was sehr komisch ist, ist das dieses Programm nicht komplett funktioniert auf meinen Kollegen sein Computer.
(Deutsche Version von Office 2010, meine ist Niederländisch)
Das einlesen von die gleiche Dateien funktioniert, nur beim Erstellen von das Diagramm bekommt er einen Error: Laufzeitfehler '1004': Die maximale Anzahl an Datenreihen pro Diagramm ist 255.
Die Fehler tritt auf bei den Befehl "Charts.Add" in einen bestimmten Macro.
Vielen dank & Gruß,
Benny

Anzeige
AW: Chart Farbe funktioniert nicht mehr in Excel 2010
27.05.2013 10:12:02
Beverly
Hi Benny,
Sub BalkenKleur()
Dim i As Integer
Dim x As Integer
With ActiveChart.SeriesCollection(1)
With .Border
.Weight = xlHairline
.LineStyle = xlNone
End With
.Shadow = False
.InvertIfNegative = False
End With
With ActiveChart.ChartGroups(1)
.Overlap = 0
.GapWidth = 0
.HasSeriesLines = False
.VaryByCategories = False
End With
'   On Error GoTo ERRORHANDLER
Application.ScreenUpdating = False
ActiveChart.SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowValue, _
AutoText:=True
For x = 1 To ActiveChart.SeriesCollection.Count
For i = 1 To ActiveChart.SeriesCollection(x).Points.Count
With ActiveChart.SeriesCollection(x).Points(i)
If CDbl(.DataLabel.Text) = "5" Then
.Interior.ColorIndex = 3
ElseIf CDbl(.DataLabel.Text) >= "4,5" Then
.Interior.ColorIndex = 3
ElseIf CDbl(.DataLabel.Text) >= "4" Then
.Interior.ColorIndex = 22
ElseIf CDbl(.DataLabel.Text) >= "3,5" Then
.Interior.ColorIndex = 46
ElseIf CDbl(.DataLabel.Text) >= "3" Then
.Interior.ColorIndex = 45
ElseIf CDbl(.DataLabel.Text) >= "2,5" Then
.Interior.ColorIndex = 40
ElseIf CDbl(.DataLabel.Text) >= "2" Then
.Interior.ColorIndex = 44
ElseIf CDbl(.DataLabel.Text) >= "1,5" Then
.Interior.ColorIndex = 36
ElseIf CDbl(.DataLabel.Text) >= "1" Then
.Interior.ColorIndex = 50
ElseIf CDbl(.DataLabel.Text) >= 0.5 Then
.Interior.ColorIndex = 43
End If
End With
Next i
Next x
ActiveChart.SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowNone, _
AutoText:=True
Application.ScreenUpdating = True
Exit Sub
'ERRORHANDLER:
'    MsgBox "De procedure is vastgelopen"
End Sub
Mir ist nur eins nicht klar: weshalb benötigst du eine Schleife über alle Datenreihen des Diagramms, wenn es anscheinend nur 1 Datenreihe hat?


Anzeige

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige