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