4

我必须仅使用 VBA 在 Excel 中制作柱形图(无需用户输入)。

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

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

4

3 回答 3

4

如果您使用的是 Excel 2007,请尝试使用早期版本,因为 2007 的宏记录器有点残缺。

这就是我得到的:

ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.Orientation = xlUpward
于 2009-01-05T10:35:31.080 回答
1
ActiveChart.Axes(xlCategory).TickLabels.Orientation = 67
于 2010-08-17T19:23:27.923 回答
0

关于 .Activate

老派的 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 年里一直在“困扰”我。

于 2019-07-18T10:27:01.963 回答