MICROSOFT

EP07. “Programming Charts 用 VBA 操作图表”

首页 Microsoft 工具 Excel · VBA · Workbook and Worksheet Object · EP07
约 5 分钟· #EP07#Excel#Workbook and Worksheet Object
🔒 登录后可标记已读
  • 这篇教你用 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 ChartObjectChartObject 是图表在工作表上的"容器"外壳,真正的图表内容要透过 .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 是内建常量)

代码怎么运行

  1. 工作表上先建好至少一个图表(Insert → Charts)
  2. Alt + F11 打开 VBA 编辑器,Insert → Module,贴入代码
  3. 回到工作表放命令按钮,分别绑定两个 Sub
  4. 点击按钮,观察图表类型变成饼图、或标题与图例位置变化

[截图:运行 Change_All_Charts_To_Pie 前后的对比,原本的柱状图/折线图变成饼图]

[截图:运行 Modify_First_Chart 后,图表标题变成 "Sales Report"、图例移到图表底部的效果]


学完你会

  • ✅ 能用 For Each 遍历所有 ChartObject,批次改图表类型
  • ✅ 能针对单一图表修改标题和图例位置
  • ✅ 分得清 ChartObject(容器)和 Chart(内容)两个对象的差别

常见错误

  • 混淆 ChartObjectChart 两个对象——ChartObject 是图表的外框容器(负责位置、大小),Chart 才是实际的图表内容(类型、标题、图例等),改类型/标题一定要透过 .Chart 属性
  • Worksheets(1).ChartObjects(1) 里的索引编号是"图表在工作表上被创建的顺序",如果手动删过图表再新增,索引对应关系可能跟预期不一样,建议改用图表名称(如 ChartObjects("Chart 1"))更保险

Sources

Blog / Website:

  1. Programming Charts