Hallo,
ich habe 2 vorlagen um mit VBA einheitliche Diagramme zu erstellen. Bei dem ersten Code wird nur ein Diagramm formatiert und beim zweiten Code zwei nebeneinander.
Leider wird bei dem Code für 2 Diagramme nebeneinander mir ein Fehler angezeigt und ich verstehe zu wenig von VBA um das Problem selber zu lösen
Der erste Code funktioniert eiwandfrei. Er enthält aber die gleiche Zeile, wie Code2, welche als Fehler angezeigt wird.
Beim Code 2 wird mir nämlich die Zeile "With ActiveSheet.Shapes(Mid$(ActiveChart.Name, Len(ActiveSheet.Name) + 2))" als Fehler markiert. Die Fehlermeldung lautet Objektvariable oder With-Blockvariable nicht fesgelegt.
Ich hoffe mir kann jemand helfen, danke:)
Sub Diagrammgroesse_anpassen_eins()
'Ansicht auf 100% einstellen
'in Word Höhe:8cm
'WICHTIG: Makro immer 2x auf Diagramm anwenden!
With ActiveSheet.Shapes(Mid$(ActiveChart.Name, Len(ActiveSheet.Name) + 2))
'Diagrammgröße festlegen; Alle Eingaben in [cm]
.Width = 22 * 72 / 2.54 '22cm fixe Angabe
.Height = 14 * 72 / 2.54 '14cm fixe Angabe
.Line.Visible = msoFalse 'kein Rahmen um das Diagramm
'Zeichnungsflächengröße und Position festlegen
ActiveChart.SeriesCollection(1).Select
ActiveChart.PlotArea.Select
Selection.Left = 1.4 * 72 / 2.54 'Abstand von linkem Rand (x-Position) für eine Ziffer in Y-Achsenbeschriftung: 2cm; pro zusätzlicher Ziffer - 0.3cm (Für Punkt: -0.1cm)
Selection.Top = 0.35 * 72 / 2.54 'Abstand von oberem Rand (y-Position) fixe Angabe
Selection.InsideWidth = (18.4 * 72 / 2.54) 'Breite Zeichnungsfläche fixe Angabe
Selection.InsideHeight = (11.4 * 72 / 2.54) 'Höhe Zeichnungsfläche fixe Angabe
End With
'Schriftgröße und Schriftart ändern
'y-Achsentitel
ActiveChart.Axes(xlValue).AxisTitle.Font.Size = 16 'Schriftgröße Y-Achsentitel
ActiveChart.Axes(xlValue).AxisTitle.Font.Name = "Arial" 'Schriftart Y-Achsentitel
ActiveChart.Axes(xlValue).AxisTitle.Select
Selection.Format.TextFrame2.TextRange.Font.Bold = msoTrue 'Schrifttyp Y-Achsentitel "Fett"
'x-Achsentitel
ActiveChart.Axes(xlCategory).AxisTitle.Font.Size = 16 'Schriftgröße x-Achsentitel
ActiveChart.Axes(xlCategory).AxisTitle.Font.Name = "Arial" 'Schriftart X-Achsentitel
ActiveChart.Axes(xlCategory).AxisTitle.Select
Selection.Format.TextFrame2.TextRange.Font.Bold = msoTrue
'y-Achsenbeschriftung
ActiveChart.Axes(xlValue).TickLabels.Font.Size = 14 'Schriftgröße Y-Achsenbeschriftung
ActiveChart.Axes(xlValue).TickLabels.Font.Name = "Arial" 'Schriftart Y-Achsenbeschriftung
'y-Achsenbeschriftung
ActiveChart.Axes(xlCategory).TickLabels.Font.Size = 14 'Schriftgröße x-Achsenbeschriftung
ActiveChart.Axes(xlCategory).TickLabels.Font.Name = "Arial" 'Schriftart x-Achsenbeschriftung
'Legende
ActiveChart.Legend.Font.Size = 12 'Schriftgröße Legende
ActiveChart.Legend.Font.Name = "Arial" 'Schriftart Legende
'y-Achsenbeschriftungen positionieren
ActiveChart.Axes(xlValue).AxisTitle.Select
Selection.Left = 0 * 72 / 2.54 'x-Position der y-Achsenbeschriftung fixe Angabe
Selection.Top = 5.6 * 72 / 2.54 'y-Position der y-Achsenbeschriftung - je nach Beschriftungslänge anpassen
'x-Achsenbeschriftungen positionieren
ActiveChart.Axes(xlCategory).AxisTitle.Select
Selection.Left = 10.9 * 72 / 2.54 'x-Position der x-Achsenbeschriftung - je nach Beschriftungslänge anpassen
Selection.Top = 13 * 72 / 2.54 'y-Position der x-Achsenbeschriftung fixe Angabe
'Legendengröße
ActiveChart.Legend.Select
Selection.Width = 6 * 72 / 2.54 'Breite, durch probieren an Text anpassen
Selection.Height = 0.7 * 72 / 2.54 'Höhe, bei 1 Zeile: 0.7 cm; pro Zeile mehr + 0.6cm
'Legendenposition
Selection.Left = 2.95 * 72 / 2.54 'x-Position der Legende x=20.85-(Breite der Legende siehe oben)
Selection.Top = 0.85 * 72 / 2.54 'y-Position der Legende, bei 1 Zeile: 11.1 cm; pro Zeile - 0.6cm
'Legendenposiotion oben rechts
'Selection.Left = 14.85 * 72 / 2.54 'x-Position der Legende x=20.85-(Breite der Legende siehe oben)
'Selection.Top = 0.85 * 72 / 2.54 'y-Position der Legende fixe Angabe
'Legendenposiotion oben links
'Selection.Left = 2.95 * 72 / 2.54 'x-Position der Legende fixe Angabe
'Selection.Top = 0.85 * 72 / 2.54 'y-Position der Legende fixe Angabe
End Sub
------------------------------------------------
Sub Diagrammgroesse_anpassen_zwei()
With ActiveSheet.Shapes(Mid$(ActiveChart.Name, Len(ActiveSheet.Name) + 2))
'Diagrammgröße festlegen; Alle Eingaben in [cm]
.Width = 22 * 72 / 2.54 '22cm fixe Angabe
.Height = 14 * 72 / 2.54 '14cm fixe Angabe
.Line.Visible = msoFalse 'kein Rahmen um das Diagramm
'Zeichnungsflächegröße und Position festlegen
ActiveChart.SeriesCollection(1).Select
ActiveChart.PlotArea.Select
Selection.Left = 2.85 * 72 / 2.54 'Abstand von linkem Rand (x-Position) für eine Ziffer in Y-Achsenbeschriftung: 2.85cm; pro Ziffer - 0.45cm (für Punkt: -0.15cm)
Selection.Top = 0.1 * 72 / 2.54 'Abstand von oberem Rand (y-Position) fixe Angabe
Selection.InsideWidth = (16.6 * 72 / 2.54) 'Breite Zeichnungsfläche fixe Angabe
Selection.InsideHeight = (10.5 * 72 / 2.54) 'Höhe Zeichnungsfläche fixe Angabe
End With
'Schriftgröße und Schriftart ändern
'y-Achsentitel
ActiveChart.Axes(xlValue).AxisTitle.Font.Size = 26 'Schriftgröße Y-Achsentitel
ActiveChart.Axes(xlValue).AxisTitle.Font.Name = "Arial" 'Schriftart Y-Achsentitel
ActiveChart.Axes(xlValue).AxisTitle.Select
Selection.Format.TextFrame2.TextRange.Font.Bold = msoTrue 'Schrifttyp Y-Achsentitel "Fett"
'x-Achsentitel
ActiveChart.Axes(xlCategory).AxisTitle.Font.Size = 26 'Schriftgröße x-Achsentitel
ActiveChart.Axes(xlCategory).AxisTitle.Font.Name = "Arial" 'Schriftart X-Achsentitel
ActiveChart.Axes(xlCategory).AxisTitle.Select
Selection.Format.TextFrame2.TextRange.Font.Bold = msoTrue 'Schrifttyp X-Achsentitel "Fett"
'y-Achsenbeschriftung
ActiveChart.Axes(xlValue).TickLabels.Font.Size = 24 'Schriftgröße Y-Achsenbeschriftung
ActiveChart.Axes(xlValue).TickLabels.Font.Name = "Arial" 'Schriftart Y-Achsenbeschriftung
'x-Achsenbeschriftung
ActiveChart.Axes(xlCategory).TickLabels.Font.Size = 24 'Schriftgröße x-Achsenbeschriftung
ActiveChart.Axes(xlCategory).TickLabels.Font.Name = "Arial" 'Schriftart x-Achsenbeschriftung
'Legende
ActiveChart.Legend.Font.Size = 20 'Schriftgröße Legende
ActiveChart.Legend.Font.Name = "Arial" 'Schriftart Legende
'y-Achsenbeschriftungen positionieren
ActiveChart.Axes(xlValue).AxisTitle.Select
Selection.Left = 0 * 72 / 2.54 'x-Position der y-Achsenbeschriftung fixe Angabe
Selection.Top = 4.45 * 72 / 2.54 'y-Position der y-Achsenbeschriftung - je nach Beschriftungslänge anpassen
'x-Achsenbeschriftungen positionieren
ActiveChart.Axes(xlCategory).AxisTitle.Select
Selection.Left = 11.35 * 72 / 2.54 'x-Position der x-Achsenbeschriftung - je nach Beschriftungslänge anpassen
Selection.Top = 12.5 * 72 / 2.54 'y-Position der x-Achsenbeschriftung fixe Angabe
'Legendengröße
ActiveChart.Legend.Select
Selection.Width = 3 * 72 / 2.54 'Breite, durch probieren an Text anpassen
Selection.Height = 2 * 72 / 2.54 'Höhe, bei 1 Zeile: 1 cm; pro Zeile mehr + 1cm
'Legendenposition
Selection.Left = 17.4 * 72 / 2.54 'x-Position der Legende x=20.4-(Breite der Legende siehe oben)
Selection.Top = 0.8 * 72 / 2.54 'y-Position der Legende, bei 1 Zeile: 9.8 cm; pro Zeile - 1cm
'Legendenposiotion oben rechts
'Selection.Left = 17.4 * 72 / 2.54 'x-Position der Legende x=20.4-(Breite der Legende siehe oben)
'Selection.Top = 0.8 * 72 / 2.54 'y-Position der Legende fixe Angabe
'Legendenposiotion oben links
'Selection.Left = 4.4 * 72 / 2.54 'x-Position der Legende fixe Angabe
'Selection.Top = 0.8 * 72 / 2.54 'y-Position der Legende fixe Angabe
End Sub
|