重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
程序一:把所有图表统一改成饼图
Sub Change_All_Charts_To_Pie()
Dim cht As ChartObject
For Each cht In Worksheets(1).ChartObjects
cht.Chart.ChartType = xlPie
Next cht
End Sub代码说明:
Dim cht As ChartObject:ChartObject是图表在工作表上的"容器"外壳,真正的图表内容要透过.Chart这个属性访问For Each cht In Worksheets(1).ChartObjects:遍历第一张工作表上的所有图表对象cht.Chart.ChartType = xlPie:把每个图表的类型改成饼图(xlPie是内建常量)
程序二:修改第一张图表的标题和图例位置
Sub Modify_First_Chart()
Worksheets(1).ChartObjects(1).Activate
ActiveChart.ChartTitle.Text = "Sales Report"
ActiveChart.Legend.Position = xlBottom
End Sub代码说明:
Worksheets(1).ChartObjects(1).Activate:先把第一张工作表上的第一个图表设为激活状态ActiveChart.ChartTitle.Text = "Sales Report":把当前激活图表的标题改成 "Sales Report"ActiveChart.Legend.Position = xlBottom:把图例(Legend)移到图表底部(xlBottom是内建常量)
代码怎么运行
- 工作表上先建好至少一个图表()
- Alt+F11 打开 VBA 编辑器,,贴入代码
- 回到工作表放命令按钮,分别绑定两个 Sub
- 点击按钮,观察图表类型变成饼图、或标题与图例位置变化
运行 Change_All_Charts_To_Pie 前后的对比,原本的柱状图/折线图变成饼图
运行 Modify_First_Chart 后,图表标题变成 "Sales Report"、图例移到图表底部的效果
学完你会
常见错误
- 混淆
ChartObject和Chart两个对象——ChartObject是图表的外框容器(负责位置、大小),Chart才是实际的图表内容(类型、标题、图例等),改类型/标题一定要透过.Chart属性 Worksheets(1).ChartObjects(1)里的索引编号是"图表在工作表上被创建的顺序",如果手动删过图表再新增,索引对应关系可能跟预期不一样,建议改用图表名称(如ChartObjects("Chart 1"))更保险
Sources
Blog / Website: