Hi Andy,
vom Prinzip her kann man das auf diese Weise machen:
Sub DiagrammAchsentitel()
With ActiveSheet.ChartObjects("Diagramm 1").Chart
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "X-Achse"
End With
End Sub
Anstelle des festen Textes "X-Achse" kannst du auch einen Zellinhalt verwenden, z.B. Range("B1").
Andere Möglichkeit - du markierst das Diagramm und verwendest diesen Code:
Sub DiaAchsentitel()
With ActiveSheet.ChartObjects(Application.Substitute(Selection.Parent.Name, _
ActiveSheet.Name & " ", "")).Chart
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = Range("B1")
End With
End Sub
Wenn du die Titel für mehrere Diagramm ändern willst, dann kannst du den Code entweder für jedes Diagramm entsprechend anpassen, oder du schreibst die Titel in fortlaufend in Zellen (z.B. Spalte B), sodass sie daraus entnommen werden können:
Sub DiagrammAchsentitel()
Dim inTitel As Integer
Dim chDiagramm As ChartObject
inTitel = 1
For Each chDiagramm In ActiveSheet.ChartObjects
With chDiagramm.Chart
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = Cells(inTitel, 2)
End With
inTitel = inTitel + 1
Next chDiagramm
End Sub
Dabei gibt es jedoch folgendes Problem, welches sich auch nicht umgehen lässt: Excel nummeriert intern die Diagramme in der Reihenfolge wie sie erstellt werden. Wenn nun aus mehreren Diagrammen zwischendurch eins gelöscht (z.B. das 3.) und stattdessen ein neues eingefügt wird, hat das zuletzt eingefügte die höchste Nummer, auch wenn es sich nun an 3. Position im Tabellenblatt befindet. Somit würde das neu eingefügte den Achsentitel aus der letzten Zeile bekommen, obwohl es eigentlich den Titel aus der 3. Zeile bekommen müsste. Wenn du garantieren kannst, dass du die Diagrammreihenfolge nicht verändert hast (keins gelöscht, keins zwischendurch hinzugefügt, keins in der Positionsreihenfolge verschoben), kannst du den Code mit der Schleife verwenden.
Bis später,
Karin