4 Stimmen

Wie kann man die Ausrichtung von Beschriftungen auf Diagrammachsen festlegen?

Ich muss in Excel Säulendiagramme nur mit VBA erstellen (keine Benutzereingabe).

Ich möchte die Beschriftungen der x-Achse so formatieren, dass die Ausrichtung für jede Beschriftung -270 Grad beträgt. Dies kann manuell durch Ändern der Eigenschaft "Benutzerdefinierter Winkel" auf der Registerkarte "Ausrichtung" im Dialogfeld "Achse formatieren" erfolgen.

Ich habe ein Makro aufgezeichnet, aber Excel scheint den Ausrichtungsschritt nicht aufzuzeichnen.

4voto

Artelius Punkte 46771

Wenn Sie Excel 2007 verwenden, versuchen Sie es mit einer früheren Version, da der Makro-Recorder von 2007 ein wenig verkrüppelt ist.

Das habe ich bekommen:

ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.Orientation = xlUpward

1voto

Kyle Punkte 11
ActiveChart.Axes(xlCategory).TickLabels.Orientation = 67

0voto

flodis Punkte 915

Über .Activate

Bei VBA-Makros der alten Schule denkt man oft, dass man ein Objekt "aktivieren" muss, damit es "aktuell" wird. Als ob man auf eine grafische Darstellung klickt und alles, was man mit Maus und Tastatur tut, vom aktivierten Objekt empfangen wird. Der "Makro-Generator" für das Microsoft Büro Produkte für diesen Kodierungsstil verantwortlich ist.

In der Welt der VBA-Programmierung oder der Verwendung der Office-APIs von C# oder anderen gängigen Sprachen sollte dies jedoch nicht so gehandhabt werden.

Um ein Diagrammobjekt, eine Linie usw. zu ändern, können Sie das Objekt selbst über seine Objektverweis . Sobald Sie es erhalten haben, können Sie auf alle Methoden und Eigenschaften zugreifen, und die "Aktivierung" ist nicht Teil des Konzepts. Wenn Sie aus irgendeinem Grund wollen, dass das Objekt den Fokus erhält, damit der Benutzer es sehen kann, haben visuelle Objekte normalerweise eine "Activate()"-Funktion, die Sie aufrufen können.

In diesem Beispiel wird die Linienbreite mehrerer Serien in einem Diagramm auf 1 gesetzt:

Sub Change_all_charts()
    Dim ch As chart
    Dim ws As Worksheet
    Dim ChtObj As ChartObject
    Dim srs As Series

    'Get a reference to the active worksheet
    Set ws = ActiveSheet

    'Loop each chart object in worksheet ws
    For Each ChtObj In ws.ChartObjects

        'Operate on 'ChtObj.chart' object using . notation
        With ChtObj.chart
            Debug.Print "Chart being modified: '" & .Name & "'"
            'Loop through all series in the chart .Series collection
            For Each srs In .SeriesCollection
                Debug.Print "  Series being modified: '" & srs.Name & "'"
                'Set the series line width
                srs.Format.Line.Weight = 1
            Next
        End With
    Next
End Sub

Früher (oder auch heute noch) programmierten Finanzfachleute Excel und ließen ihre Arbeitsblätter wie verrückt blinken und animieren, weil sie dachten, dass ein Objekt den "Fokus" erhalten muss, um geändert zu werden.

Nun, jetzt ist es gesagt, denn es hat mich in den letzten 40 Jahren "geärgert".

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X