我需要使用VBA在Excel中制作柱状图(无需用户输入)。
我想要格式化x轴标签,使每个标签的对齐方式都为-270度。这可以通过在“格式轴”对话框的“对齐”选项卡中更改“自定义角度”属性来手动完成。
我录制了一个宏,但Excel似乎没有记录对齐步骤。
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.Orientation = xlUpward
ActiveChart.Axes(xlCategory).TickLabels.Orientation = 67
关于 .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
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory).TickLabels.Orientation = xlUpward
,避免激活和选择,从而提高性能并保留剪贴板内容。 - e100