Thema Datum  Von Nutzer Rating
Antwort
Rot Diagramm formatieren VBA
08.02.2017 09:52:49 Teresa
NotSolved
08.02.2017 10:59:59 Gast89404
NotSolved
08.02.2017 11:06:16 Gast70427
NotSolved

Ansicht des Beitrags:
Von:
Teresa
Datum:
08.02.2017 09:52:49
Views:
4856
Rating: Antwort:
  Ja
Thema:
Diagramm formatieren VBA

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




 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Diagramm formatieren VBA
08.02.2017 09:52:49 Teresa
NotSolved
08.02.2017 10:59:59 Gast89404
NotSolved
08.02.2017 11:06:16 Gast70427
NotSolved