EP07. “Programming Charts 用 VBA 操作图表”
🔒 登录后可标记已读- 这篇教你用 VBA 批次修改工作表上的图表
- 包含遍历所有图表、统一改成饼图
- 也教针对某一张图表,单独修改标题和图例位置
- 前置知识是 For Each 循环
- 学完能理解 ChartObject 和 Chart 两个对象的关系,用代码取代手动一张张调整图表格式
重点内容
适用版本
桌面版通用(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是内建常量)
代码怎么运行
- 工作表上先建好至少一个图表(Insert → Charts)
Alt + F11打开 VBA 编辑器,Insert → Module,贴入代码- 回到工作表放命令按钮,分别绑定两个 Sub
- 点击按钮,观察图表类型变成饼图、或标题与图例位置变化
[截图:运行 Change_All_Charts_To_Pie 前后的对比,原本的柱状图/折线图变成饼图]
[截图:运行 Modify_First_Chart 后,图表标题变成 "Sales Report"、图例移到图表底部的效果]
学完你会
- ✅ 能用 For Each 遍历所有 ChartObject,批次改图表类型
- ✅ 能针对单一图表修改标题和图例位置
- ✅ 分得清
ChartObject(容器)和Chart(内容)两个对象的差别
常见错误
- 混淆
ChartObject和Chart两个对象——ChartObject是图表的外框容器(负责位置、大小),Chart才是实际的图表内容(类型、标题、图例等),改类型/标题一定要透过.Chart属性 Worksheets(1).ChartObjects(1)里的索引编号是"图表在工作表上被创建的顺序",如果手动删过图表再新增,索引对应关系可能跟预期不一样,建议改用图表名称(如ChartObjects("Chart 1"))更保险
Sources
Blog / Website: