Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1136to1140
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
Diagrammgröße per VBA ändern
ben
Hallo zusammen,
Ich habe drei Command Buttons mit deren Betätigung drei verschiedene Diagramme (Kuchendiagramm) angezeigt werden können. Wenn ein neues Diagramm angezeigt werden soll, wird das alte zuvor gelöscht.
Leider werden die Diagramme aber immer nur recht klein angezeigt.
Ich möchte jetzt gerne, dass die Diagramme, beim Klicken auf die Command Buttons, automatisch eine vorgegebene Größe haben. Auch die Schriftgröße der %-Angabe innerhalb des Diagramms würde ich gerne vergrößern.
Zudem würde ich gerne die Datei auch mit Office 2003 nutzen können. Natürlich funktionieren dann wegen der neuen Formatierung von der 2007er Version die Grafiken nicht mehr bei der 2003er Version. Hat jmd. einen Tipp wie man das mit geringen Aufwand auch bei Office 2003 zum Laufen bekommt, oder muss man den VBA Code neu schreiben?
Kann mir da jmd. helfen!?
Vielen Dank im Voraus!!

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Diagrammgröße per VBA ändern
20.02.2010 10:34:56
Beverly
Hi Ben,
weshalb löschst du die Diagramm jedes mal? Ich würde sie bei Erfordernis aus- bzw. einblenden - so kann die eingestellte Formatierung bleiben.


AW: Diagrammgröße per VBA ändern
20.02.2010 13:46:05
fcs
Hallo Ben,
wenn man Diagramme unter Excel 2007 und älteren Versionen nutzen möchte, dann muss man in Excel 2007 auf den neuen "Schnickschnack" verzichten.
Du solltest Beverly's Tipp beherzigen und die Diagramme ein-/ausblenden. Das Makro müsste dann ggf. jeweils nur den Sichtbar-Status und den Datenbereich des Diagramms anpassen. Das funktioniert meines Wissens unter allen Versionen.
Wenn du die Diagramme immer neu erstellst, dann müssen bestimmte Anweisungen abhängig von der Excel-Version ausgeführt werden.
Schaut dann etwa wie folgt aus. Funktioniert z.B unter Excel 2007 und Excel 97.
Gruß
Franz
Sub Torte02()
Dim oChart As Chart, rngChart As Range, wks As Worksheet
Dim oShape As Shape, oSerie As Series
Set wks = Worksheets("Tabelle1")
With wks
'ggf. vorhandenes Diagramm löschen
If .ChartObjects.Count > 0 Then .ChartObjects(1).Delete
'Datenbereich des Diagramms
Set rngChart = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 1))
If Val(Left(Application.Version, 2)) >= 12 Then
' Diagramm in Excel 2007 erstellen
'ggf. vorhandenes Diagramm löschen
Set oShape = .Shapes.AddChart
Set oChart = oShape.Chart
Else
' Diagramm in Excel 97-2003 erstellen
Charts.Add
ActiveChart.Location Where:=xlLocationAsObject, Name:=.Name
Set oChart = .ChartObjects(.ChartObjects.Count).Chart
Set oShape = .Shapes(.Shapes.Count)
End If
End With
'Diagramm-Typ
oChart.ChartType = xlPie
'Diagramm-Daten
oChart.SetSourceData Source:=Range("'" & wks.Name & "'!" & rngChart.Address), _
PlotBy:=xlColumns
'Position und Größe des Diagramms
With oShape
.Top = wks.Range("B4").Top
.Left = wks.Range("B4").Left
.Width = 500
.Height = 300
End With
With oChart
'Diagramm-/Achsentitel
.HasTitle = True
With .ChartTitle
.Text = "Test-Diagramm"
.Characters.Font.Size = 16
End With
'Zeichenfläche
If Val(Left(Application.Version, 2)) >= 12 Then
'Keine Anpassungen für Excel 2007
Else
.PlotArea.Fill.BackColor.SchemeColor = xlColorIndexNone
.PlotArea.Border.LineStyl = xlLineStyleNone
End If
End With
'Werte-Beschriftung
Set oSerie = oChart.SeriesCollection(1)
With oSerie
.ApplyDataLabels Type:=xlDataLabelsShowPercent
'Position der Beschriftung
If Val(Left(Application.Version, 2)) >= 12 Then
'Keine Anpassungen für Excel 2007
Else
.DataLabels.Position = xlLabelPositionInsideEnd
End If
With .DataLabels.Font
.Name = "Garamond"
.FontStyle = "Standard"
.Size = 16
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
End With
End Sub

Anzeige
AW: Diagrammgröße per VBA ändern
20.02.2010 15:56:40
Beverly
Hi Franz, Hi Ben,
Diagrammobjekte lassen sich in den Excel-Versionen 97-2010 mit einer vorgegebenen Größe und Position erstellen - der Code dafür unterscheidet sich nicht nach der Version. Der Unterschied ab Version 2007 ist nur, dass die Beschriftungslabel automatisch innerhalb der Segmente positioniert werden, bei den Vorgängerversionen dagegen außerhalb. Dem kann man aber Abhilfe schaffen, indem man sie zielgerichtet per Code positioniert - das schadet auch in den jeweils anderen Versionen nicht. Der folgende Code läuft problemlos in allen Versionen ab 97:
Sub DiaErstellen()
Dim chDiagramm As ChartObject
' Fehler abfangen falls Diagramm nicht vorhanden
On Error Resume Next
' Diagrammobjekt "Dia 1" auf die Variable schreiben
Set chDiagramm = ActiveSheet.ChartObjects("Dia 1")
' Fehler zurücksetzen
On Error GoTo 0
' wenn "Dia 1" vorhanden dann löschen
If Not chDiagramm Is Nothing Then chDiagramm.Delete
' neues Diagrammobjekt erstellen (Position link, Position oben, Beite, Höhe)
Set chDiagramm = ActiveSheet.ChartObjects.Add(50, 100, 450, 200)
' bezogen auf das Diagramm objekt
With chDiagramm
' Name zuweisen damit es gezielt wieder gelöscht werden kann
.Name = "Dia 1"
' Diagrammtyp Kreis
.Chart.ChartType = xlPie
' Wertebereich zuweisen in Tabelle1, A1:A10
.Chart.SetSourceData Source:=Sheets("Tabelle1").Range("A1:A10")
' Beschriftung der Datenreihe anzeigen, Inhalt der Beschriftungslabel sind %-Angaben
.Chart.SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowPercent
' Beschriftungslabel Ende außerhalb positionieren
.Chart.SeriesCollection(1).DataLabels.Position = xlLabelPositionOutsideEnd
' bezogen auf die Schrift der Beschriftungslabels der Datenreihe 1
With .Chart.SeriesCollection(1).DataLabels.Font
.Name = "Arial"
.FontStyle = "Standard"
.Size = 15
End With
End With
' Variable leeren
Set chDiagramm = Nothing
End Sub



Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige