如何在图表轴上设置标签对齐方式?

4

我需要使用VBA在Excel中制作柱状图(无需用户输入)。

我想要格式化x轴标签,使每个标签的对齐方式都为-270度。这可以通过在“格式轴”对话框的“对齐”选项卡中更改“自定义角度”属性来手动完成。

我录制了一个宏,但Excel似乎没有记录对齐步骤。

3个回答

4
如果您正在使用Excel 2007,请尝试使用早期版本,因为2007的宏录制器有点残缺不全。
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.Orientation = xlUpward

太棒了,解决了问题 :) 非常感谢。 (...想想我还担心可能没有这个选项呢) - Kshitij
谢谢@artelius,我刚遇到了Excel 2007的同样问题。 - Mark Nold
2
您可以简化为:ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory).TickLabels.Orientation = xlUpward,避免激活和选择,从而提高性能并保留剪贴板内容。 - e100
这里也有完全相同的问题。非常感谢。 - TheAgent

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

0

关于 .Activate

老式的 VBA 宏经常让人们认为你必须“激活”一个对象才能使其“当前”。就像你点击一个图形表示,鼠标和键盘上的所有操作都会被激活的对象接收一样。微软 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年。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接