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:
5547
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:)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
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