Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
960to964
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
960to964
960to964
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Diagramm über Makro

Diagramm über Makro
12.03.2008 15:05:00
Snewi
Hallo
um bei meinem Diagramm die BEschriftungen automatisch zu ändern benutze ich folgenden Code:

Sub DiagrammBeschriftung()
Dim inPunkt As Integer
Dim chDiagramm As Chart
Dim wsTabelle As Worksheet
Set wsTabelle = ActiveSheet
Set chDiagramm = ActiveSheet.ChartObjects(1).Chart
With chDiagramm
.SeriesCollection(1).ApplyDataLabels
For inPunkt = 1 To .SeriesCollection(1).Points.Count
If wsTabelle.Cells(inPunkt + 4, 7) = 0 Then
.SeriesCollection(1).Points(inPunkt).DataLabel.Text = ""
Else
.SeriesCollection(1).Points(inPunkt).DataLabel.Text = wsTabelle.Cells(inPunkt +  _
_
4, 7)
.SeriesCollection(1).Points(inPunkt).DataLabel.Text = Format(wsTabelle.Cells( _
inPunkt + 4, 7), "#0.00")
End If
Next inPunkt
End With
End Sub


Nun befindet sich das Diagramm auf der selben Seite wie die Daten dazu!
Wie müsste ich den Code verändern wenn das Diagramm in einem anderen Sheet stehen soll?
Gruß

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramm über Makro
12.03.2008 15:21:00
Beverly
Hi,

Set wsTabelle = Worksheets("Tabelle2")




AW: Diagramm über Makro
12.03.2008 15:27:00
Snewi
Hallo
das klappt irgendiwe nicht weil ich ja auf die Daten für das Diagramm verweise und da wo das Diagramm sich befindet gibt es ja dann nur noch das Diagramm und nicht mehr die Daten!
Gruß

AW: Diagramm über Makro
12.03.2008 15:37:00
Uwe
Hi,
ich würde dann analog zu Karins Idee (und statt Ihrer Idee) vorschlagen:
Set chDiagramm = Worksheets("Tabelle2").ChartObjects(1).Chart
Versuchs einfach mal, ich lasse die Frage offen.
Gruß
Uwe
(:o)

Anzeige
AW: Diagramm über Makro
12.03.2008 16:01:00
Beverly
Hi,
das ist eine Frage, von wo aus man den Code startet. In dem von mir geposteten Fall muss der Code aus dem Tabellenblatt mit dem Diagramm gestartet werden. Damit man den Cod von überall her starten kann, müssen beide Objektvariablen mit dem dazugehörigen Tabellenblatt belegt werden

Sub DiagrammBeschriftung()
Dim inPunkt As Integer
Dim chDiagramm As Chart
Dim wsTabelle As Worksheet
Set wsTabelle = Worksheets("Tabelle2")
Set chDiagramm = Worksheets("Tabelle1").ChartObjects(1).Chart
With chDiagramm
.SeriesCollection(1).ApplyDataLabels
For inPunkt = 1 To .SeriesCollection(1).Points.Count
If wsTabelle.Cells(inPunkt + 4, 7) = 0 Then
.SeriesCollection(1).Points(inPunkt).DataLabel.Text = ""
Else
.SeriesCollection(1).Points(inPunkt).DataLabel.Text = wsTabelle.Cells(inPunkt +  _
_
_
4, 7)
.SeriesCollection(1).Points(inPunkt).DataLabel.Text = Format(wsTabelle.Cells( _
inPunkt + 4, 7), "#0.00")
End If
Next inPunkt
End With
End Sub




Anzeige
AW: Diagramm über Makro
13.03.2008 10:27:00
Snewi
Das hat schon mal geklappt supi :-)
Jetzt möchte ich noch eine neue Datenreihe hinzufügen die aber andere Werte enthält!
Es muss dann auch noch auf null überprüft werden in Spalte 9 (wsTabelle.Cells(inPunkt + 4, 9) = 0) wie binde ich das mit ein?
Gruß

AW: Diagramm über Makro
13.03.2008 11:37:00
Beverly
Hi,
mal ungetestet

Sub DiagrammBeschriftung()
Dim inPunkt As Integer
Dim chDiagramm As Chart
Dim wsTabelle As Worksheet
Dim inSpalte As Integer
Dim inReihe As Integer
Set wsTabelle = Worksheets("Tabelle2")
Set chDiagramm = Worksheets("Tabelle1").ChartObjects(1).Chart
With chDiagramm
For inReihe = 1 To .SeriesCollection.Count
.SeriesCollection(inReihe).ApplyDataLabels
Select Case inReihe
Case 1
inSpalte = 7
Case 2
inSpalte = 9
End Select
For inPunkt = 1 To .SeriesCollection(1).Points.Count
If wsTabelle.Cells(inPunkt + 4, inSpalte) = 0 Then
.SeriesCollection(1).Points(inPunkt).DataLabel.Text = ""
Else
.SeriesCollection(1).Points(inPunkt).DataLabel.Text = wsTabelle.Cells( _
inPunkt + 4, inSpalte)
.SeriesCollection(1).Points(inPunkt).DataLabel.Text = Format(wsTabelle. _
Cells(inPunkt + 4, inSpalte), "#0.00")
End If
Next inPunkt
Next inReihe
End With
End Sub




Anzeige
AW: Diagramm über Makro
13.03.2008 12:03:00
Snewi
Excel sagt nur die Text-Eigenschaft des Data-Label Objektes kann nicht festgelegt werden!
Wenn ich eine 2Reihe hab muss ich dann nicht auch irgendwas mit Series.Collection(2) ... definieren?
Gruß

AW: Diagramm über Makro
13.03.2008 12:15:00
Beverly
Hi,
hast du die 2. Datenreihe schon hinzugefügt? Der Code läuft in einer Schleife über alle Datenreihen.


AW: Diagramm über Makro
13.03.2008 14:39:21
Snewi
Habs hinbekommen, du hattest in deinem Code vergessen der Series Collection die Reihe zu übergeben!
Super läuft soweit aber eins hab ich noch ich möchte auch automatisch die Werte direkt über dem Balken positionieren und die Farbe und Ausrichtung + Größe bestimmen!
Wie mache ich das?
Gruß

Anzeige
AW: Diagramm über Makro
13.03.2008 14:57:01
Beverly
Hi,
sorry, hast Recht. An allen Stellen wo .SeriesCollection(1) steht, muss .SeriesCollection(inReihe) stehen. Ich hatte ja auch geschrieben - ungetestet ;-)))).
Hast du schon mal mit dem Makrorekorder aufgezeichnet? Extras -&gt Makro -&gt Aufzeichnen. Zeichne deine Arbeitsschritte für die Positionierung, Ausrichtung, Farbe und Größe mal auf und stelle den Code in deinen nächsten Beitrag hier im Thread. Dann sind die Einstellungen schon so wie du sie haben möchtest und wir brauchen den Code dann nur an die richtige Stelle einpassen.


Anzeige
AW: Diagramm über Makro
13.03.2008 15:35:00
Snewi
Sieht ungefähr so aus:

Sub Makro3()
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.SeriesCollection(1).DataLabels.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.FontStyle = "Standard"
.Size = 6
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 10
.Background = xlAutomatic
End With
ActiveChart.SeriesCollection(2).DataLabels.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.FontStyle = "Standard"
.Size = 6
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
.Background = xlAutomatic
End With
End Sub


Nur die Ausrichtung ging nicht! Wie gesagt wäre schön automatisch direkt über dem jeweiligen Balken :-)
Gruß

Anzeige
AW: Diagramm über Makro
13.03.2008 16:19:00
Beverly
Hi,

Sub DiagrammBeschriftung()
Dim inPunkt As Integer
Dim chDiagramm As Chart
Dim wsTabelle As Worksheet
Dim inSpalte As Integer
Dim inReihe As Integer
Set wsTabelle = Worksheets("Tabelle2")
Set chDiagramm = Worksheets("Tabelle1").ChartObjects(1).Chart
With chDiagramm
For inReihe = 1 To .SeriesCollection.Count
.SeriesCollection(inReihe).ApplyDataLabels
Select Case inReihe
Case 1
inSpalte = 7
Case 2
inSpalte = 9
End Select
For inPunkt = 1 To .SeriesCollection(inReihe).Points.Count
If wsTabelle.Cells(inPunkt + 4, inSpalte) = 0 Then
.SeriesCollection(inReihe).Points(inPunkt).DataLabel.Text = ""
Else
With .SeriesCollection(inReihe).Points(inPunkt).DataLabel
.Text = wsTabelle.Cells(inPunkt + 4, inSpalte)
.Text = Format(wsTabelle.Cells(inPunkt + 4, inSpalte), "#0.00")
With .Font
.Name = "Arial"
.Size = 6
If inReihe = 1 Then
.ColorIndex = 10
Else
.ColorIndex = 3
End If
End With
End With
End If
Next inPunkt
Next inReihe
End With
Set wsTabelle = Nothing
Set chDiagramm = Nothing
End Sub


Was die Ausrichtung betrifft: da verstehe ich nicht ganz, wo das Problem liegt - die Labels werden doch automatisch immer oberhalb der Säulen positioniert.



Anzeige
AW: Diagramm über Makro
14.03.2008 09:50:00
Snewi
Das ist ja das Problem das macht er eben nicht automatisch!
Ich möchte die Ausrichtung 90 grad haben und direkt über dem Balken der sich öfter mal ändert!
Gruß

AW: Diagramm über Makro
14.03.2008 10:10:00
Snewi
Wie und wo füge ich das ein:
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.Orientation = xlUpward
End With

AW: Diagramm über Makro
14.03.2008 10:23:00
Beverly
Hi,
eine um 90° gedrehte Ausrichtung ist keine Standardformatierung und wird deshalb logischerweise nicht automatisch eingestellt. Dia anderen beiden Parameter sind Standard und können weggelassen werden

With .SeriesCollection(inReihe).Points(inPunkt).DataLabel
.Text = wsTabelle.Cells(inPunkt + 4, inSpalte)
.Text = Format(wsTabelle.Cells(inPunkt + 4, inSpalte), "#0.00")
.Orientation = xlUpward
With .Font
.Name = "Arial"
.Size = 6
If inReihe = 1 Then
.ColorIndex = 10
Else
.ColorIndex = 3
End If
End With
End With




Anzeige
AW: Diagramm über Makro
14.03.2008 10:12:00
Snewi
Wie und wo füge ich das ein:
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.Orientation = xlUpward
End With

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige