Microsoft Lab
全部软件
Excel工作簿与工作表对象(Workbook and Worksheet Object)约 5 分钟

Programming Charts 用 VBA 操作图表

重点内容


适用版本

桌面版通用(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 是内建常量)

代码怎么运行

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

运行 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:

  1. Programming Charts
只记在你的浏览器里,换设备不会同步。