Excel VBA:有没有办法只通过VBA格式化图表轴?

时间:2009-01-05 10:26:27

标签: excel vba excel-vba charts axis

我必须仅使用VBA在Excel中创建柱形图(无用户输入)。我想格式化x轴的标签,以便每个标签的对齐方式变为-270度。 (这可以通过更改“格式轴”对话框的“对齐”选项卡中的“自定义角度”属性来手动完成。)我尝试为此录制宏,但Excel似乎没有记录对齐步骤。有人知道如何使用VBA吗?

3 个答案:

答案 0 :(得分:4)

如果您使用的是Excel 2007,请尝试使用早期版本,因为2007年的宏录制器有点瘫痪。

这就是我得到的:

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

答案 1 :(得分:1)

ActiveChart.Axes(xlCategory).TickLabels.Orientation = 67

答案 2 :(得分:0)

关于。激活

老派的VBA宏常常使人们认为您必须“激活”并反对使其成为“当前”。就像您单击图形表示一样,您使用鼠标和键盘进行的所有操作都会被激活的对象接收。这种编码风格应归咎于 Microsoft Office 产品的“宏生成器”。

但是,在VBA编程或使用C#或其他流行语言的Office API的世界中,这不是应该这样做的方式。

要修改图表对象,折线等,您可以通过其对象的 对象引用 对其进行操作。一旦获得它,就可以访问所有方法和属性,并且“激活”不是该概念的一部分。如果您出于某种原因实际上想要让对象获得某种焦点以使用户看到它,则可视对象通常具有一个“ Activate()”函数来调用。

在此示例中,图表中多个系列的线宽设置为1:

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

在过去(或什至仍然),财务人员会进行Excel编程,使工作表像疯了似的闪烁和动画,因为他们认为和对象需要获得“焦点”才能进行修改。

现在可以说,因为过去40年一直在“生我死”。