Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1088to1092
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

Datenreihe mittels Makro formatieren

Datenreihe mittels Makro formatieren
viwaldi
Hallo allerseits.
Ich habe in Excel 2007 ein Diagramm anhand etwa 60 Datenreihen erstellt, das mir eine Skizze eines
Bauteils ausgibt. So weit, so gut.
-Aber: Als Schrauben in dem Bauteil habe ich einzelne Datenpunkte, deren Markierungsoption ich manuell auf kreisförmig und die entsprechende Größe einstellen muss, damit mir eine vernünftige Darstellung gelingt.
-Frage: Wie müsste der Code lauten, damit automatisch die Markierungsoption auf kreisförmig gestellt wird, die Größe und Farbe der Markierung aus einer Zelle des Arbeitsblattes eingelesen wird?
Mit dem Makrorekorder hab ich es schon versucht. Es wird jedoch die Fehlermeldung ausgegeben:
"Laufzeitfehler '438': Objekt unterstüzt diese Eigenschaft oder Methode nicht."
Für Antworten und Anregungen jeglicher Art wäre ich sehr dankbar.
AW: Datenreihe mittels Makro formatieren
28.07.2009 16:30:01
Beverly
Hi,
hier ein prinzipieller Code für 1 Datenreihe. Die Größe und die Farbe befinden sich in Spalte A, beginnend ab Zeile 3:
Sub DatenpunktFormatieren()
Dim inPunkt As Integer
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
For inPunkt = 1 To .Points.Count
.Points(inPunkt).MarkerStyle = xlCircle
.Points(inPunkt).MarkerSize = Cells(inPunkt + 2, 1)
.Points(inPunkt).MarkerBackgroundColorIndex = xlNone
.Points(inPunkt).MarkerForegroundColor = Cells(inPunkt + 2, 1).Interior.Color
Next inPunkt
End With
End Sub

Beachte bitte die minimal und maximal mögliche Größe der Datenpunkte - wird diese unter- bzw. überschritten, läuft der Code logischerweise auf einen Fehler.


Anzeige
AW: Datenreihe mittels Makro formatieren
29.07.2009 08:36:12
viwaldi
Hi,
erst mal vielen Dank an Beverly.
Das klappt ja super. Hat zwar erst etwas gedauert bis ich herausgefunden habe, dass man tatsächlich
die Zelle einfärben muss. Habe nämlich die Formatierung erst über den Farbindex als Zahl versucht.
Wie kann ich denn immer jeweils 4 Datenreihen gleichzeitig zusammenfassen z.B Datenreihen 21-24?
Wie sieht der Befehl aus , wenn ich für die nächsten 4 Datenreihen eine andere Formatierung habe?
-Muss der Code dann hinter

End With 
mit neuem Bezug nochmal eingefügt werden, oder geht es auch
irgendwie eleganter? Habe nämlich 100 Datenreihen die formatiert werden müssten.
Danke für eure Mühe
MfG Viwaldi
Anzeige
AW: Datenreihe mittels Makro formatieren
29.07.2009 10:25:47
Beverly
Hi,
bei mehreren Datenreihen musst du in einer Schleife jede Datenreihe einzeln abhandeln:
Sub DatenpunktFormatieren()
Dim inPunkt As Integer
Dim inReihe As Integer
Dim inSpalte As Integer
With ActiveSheet.ChartObjects(1).Chart
For inReihe = 1 To .SeriesCollection.Count
With .SeriesCollection(inReihe)
Select Case .Name
Case "Reihe1", "Reihe5", "Reihe11"
inSpalte = 1
Case "Reihe2", "Reihe18", "Reihe6"
inSpalte = 2
Case "Reihe3"
inSpalte = 3
End Select
For inPunkt = 1 To .Points.Count
.Points(inPunkt).MarkerStyle = xlCircle
.Points(inPunkt).MarkerSize = Cells(inPunkt + 2, inSpalte)
.Points(inPunkt).MarkerBackgroundColorIndex = xlNone
.Points(inPunkt).MarkerForegroundColor = Cells(inPunkt + 2, inSpalte). _
Interior.Color
Next inPunkt
End With
Next inReihe
End With
End Sub

Durch die Select Case Anweisung (am einfachsten unter Verwendung des Reihennamen) kannst du die Reihen zusammenfassen, die gleich formatiert werden sollen.
Du kannst natürlich auch - anstatt die Zellen zu färben - die ColorIndex-Nummer in die Zelle schreiben. In diesem Fall ist der Codeteil Cells(inPunkt + 2, inSpalte).Interior.Color zu ändern in Cells(inPunkt + 2, inSpalte). Du musst dabei jedoch beachten, dass inSpalte nicht die selbe Spalte wie die ist, aus der die Größe ausgelesen wird.


Anzeige
AW: Datenreihe mittels Makro formatieren
29.07.2009 10:58:36
Beverly
Hi,
bei mehreren Datenreihen musst du in einer Schleife jede Datenreihe einzeln abhandeln:
Sub DatenpunktFormatieren()
Dim inPunkt As Integer
Dim inReihe As Integer
Dim inSpalte As Integer
With ActiveSheet.ChartObjects(1).Chart
For inReihe = 1 To .SeriesCollection.Count
With .SeriesCollection(inReihe)
Select Case .Name
Case "Reihe1", "Reihe5", "Reihe11"
inSpalte = 1
Case "Reihe2", "Reihe18", "Reihe6"
inSpalte = 2
Case "Reihe3"
inSpalte = 3
End Select
For inPunkt = 1 To .Points.Count
.Points(inPunkt).MarkerStyle = xlCircle
.Points(inPunkt).MarkerSize = Cells(inPunkt + 2, inSpalte)
.Points(inPunkt).MarkerBackgroundColorIndex = xlNone
.Points(inPunkt).MarkerForegroundColor = Cells(inPunkt + 2, inSpalte). _
Interior.Color
Next inPunkt
End With
Next inReihe
End With
End Sub

Durch die Select Case Anweisung (am einfachsten unter Verwendung des Reihennamen) kannst du die Reihen zusammenfassen, die gleich formatiert werden sollen.
Du kannst natürlich auch - anstatt die Zellen zu färben - die ColorIndex-Nummer in die Zelle schreiben. In diesem Fall ist der Codeteil Cells(inPunkt + 2, inSpalte).Interior.Color zu ändern in Cells(inPunkt + 2, inSpalte). Du musst dabei jedoch beachten, dass inSpalte nicht die selbe Spalte wie die ist, aus der die Größe ausgelesen wird.


Anzeige
AW: Datenreihe mittels Makro formatieren
29.07.2009 12:43:10
viwaldi
Hi Beverly
Ein riesiges Dankeschön dass du dich meiner annimmst.
ich versuche es schon seit fast 2 Stunden und krieg es einfach nicht hin.
VBA meckert ständig rum und spuckt Fehler 1004 aus.
Beim Debuggen zeigt er mir folgende Zeile:
.Points(inPunkt).MarkerSize = Cells(inPunkt + 2, inSpalte)

wenn ich inSpalte durch einen Zahlenwert ersetze, dann wird es ausgeführt,
logischerweise jedoch für alle Datenreihen dieselbe Formatierung.
Was mache ich da falsch?
MfG Viwaldi
AW: Datenreihe mittels Makro formatieren
29.07.2009 14:08:52
Beverly
Hi,
was wird dir als Inhalt von inSpalte angezeigt in der Zeile wenn der Debugger anspringt? Ist sie vielleicht leer weil es die betreffende Datenreihe in deinem Diagramm nicht gibt (ist deren Name vielleicht falsch geschrieben in deinem Code)?


Anzeige
AW: Datenreihe mittels Makro formatieren
29.07.2009 14:34:31
viwaldi
Hallo,
Also die Namen sind richtig definiert.
Wie meinst du das als Inhalt von inSpalte?
Wenn ich mit dem Mauszeiger drübergehe dann zeigt er mir "inSpalte = 0"
Habe bis jetzt so verstanden, dass für Reihen 21-24 die Zellen A3 und B3 als Formatvorlage gilt.
für Reihen 25-28 die Zellen A4 und B4
Das ging zumindest beim ersten Code so.
Sub DatenpunktFormatieren()
Dim inPunkt As Integer
Dim inReihe As Integer
Dim inSpalte As Integer
With ActiveSheet.ChartObjects(1).Chart
For inReihe = 1 To .SeriesCollection.Count
With .SeriesCollection(inReihe)
Select Case .Name
Case "Reihe21", "Reihe22", "Reihe23", "Reihe24"
inSpalte = 1
Case "Reihe25", "Reihe26", "Reihe27", "Reihe28"
inSpalte = 2
Case "Reihe29", "Reihe30", "Reihe31", "Reihe32"
inSpalte = 3
End Select
For inPunkt = 1 To .Points.Count
.Points(inPunkt).MarkerStyle = xlCircle
.Points(inPunkt).MarkerSize = Cells(inPunkt + 2, inSpalte)
.Points(inPunkt).MarkerBackgroundColorIndex = xlNone
.Points(inPunkt).MarkerForegroundColor = Cells(inPunkt + 2, inSpalte). _
Interior.Color
Next inPunkt
End With
Next inReihe
End With
End Sub

MfG Viwaldi
Anzeige
AW: Datenreihe mittels Makro formatieren
29.07.2009 14:52:32
Beverly
Hi,
wenn inSpalte = 0 ist, wird sie mit dem Code nicht belegt. Woraus zu schlussfolgern ist, dass der Datenreihenname nicht korrekt ist und er nicht in eine der Case Anweisungen geht. Da ich deine Arbeitsmappe und deren Aufbau nicht kenne, kann ich dazu leider nichts weiter sagen - da müsstest du sie schon mal hochladen.


AW: Datenreihe mittels Makro formatieren
29.07.2009 17:56:36
viwaldi
Hi,
hier https://www.herber.de/bbs/user/63523.xlsm
ist meine Aufgabe stark vereinfacht dargestellt.
In dem Makro "DatenpunktFormatieren" wurde die Formatierung einzeln durchgeführt.
Den gleichen Effekt hätte ich gerne mit dem Makro "GruppeFormatieren"
Vielen Dank
MfG Viwaldi
Anzeige
AW: Datenreihe mittels Makro formatieren
29.07.2009 18:44:58
Beverly
Hi,
Sub GruppenFormatieren()
Dim inReihe As Integer
Dim inZeile As Integer
With ActiveSheet.ChartObjects(1).Chart
For inReihe = 1 To .SeriesCollection.Count
With .SeriesCollection(inReihe)
Select Case .Name
Case "Datenreihen3", "Datenreihen4"
inZeile = 3
Case "Datenreihen5", "Datenreihen6"
inZeile = 4
Case "Datenreihen7", "Datenreihen8"
inZeile = 5
End Select
If inZeile > 2 And inZeile 



AW: Datenreihe mittels Makro formatieren
29.07.2009 19:06:29
viwaldi
Vielen, Vielen Dank Beverly,
du bist ein Schatz.
klappt alles wie geschmiert.
Auf Wiederschreiben
Anzeige
AW: Datenreihe mittels Makro formatieren
29.07.2009 18:13:19
viwaldi
Hi,
wie geht das denn mit dem hochladen?
habe rechts oben auf "Hier gehts zum File-Upload" geklickt.
Da kann man eigentlich nichts falsch machen!?
Kann die hochgeladene Datei selbst nicht öffnen.
MfG viwaldi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige