excel - 使用 VBA 循环遍历工作簿中的所有图表

标签 excel vba loops charts foreach

我正在尝试循环遍历工作簿中的所有图表。 为什么选项 1 有效,但选项 2 无效?

'选项1

For Each sht In ActiveWorkbook.Worksheets
    For Each cht In sht.ChartObjects
        MsgBox (cht.Name)
    Next cht
Next sht

'选项2

Dim oChart As Chart
    For Each oChart In Application.Charts
        MsgBox (oChart.Name)
    Next oChart
End Sub

最佳答案

图表有两种风格:

  1. “大”图表 - 整个图表表
  2. “小”图表 - 嵌入工作表中的图表对象

这段代码:

Sub dural()
    Dim oChart As Chart
    For Each oChart In Application.Charts
        MsgBox oChart.Parent.Name & vbCrLf & oChart.Name
    Next oChart
End Sub

将显示有关“大”品种的信息。

如果您想了解“小”图表的信息:

Sub dural2()
    Dim sh As Worksheet, i As Long
    For Each sh In Worksheets
        If sh.ChartObjects.Count > 0 Then
            For i = 1 To sh.ChartObjects.Count
                MsgBox sh.ChartObjects(i).Chart.Name
            Next i
        End If
    Next sh
End Sub

请注意,我们需要一个显式的 If 语句来处理没有图表的工作表,并且 .Chart 用于访问每个 ChartObjects 列表中的图表。

关于excel - 使用 VBA 循环遍历工作簿中的所有图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36955925/

相关文章:

excel - VBA-MouseMove 打开和关闭另一个用户窗体

python - 在python中每次只比较多个列表一次

vba - 仅允许数字作为 CommandButton1_Click() 的 Application.InputBox 的用户输入值

python - 如何使用 Xlwings 和 Python 合并同一 Excel 工作簿中的所有工作表

excel - 在VBA中使用Solver将计算模式设置为手动

excel - 检测工作表的重命名或删除

c++ - 循环分割性能问题

c - 简单的嵌套 for 循环在 C 中无法正常工作(二维数组初始化)

excel - 自动化 Excel 工作 - 将平面文件转换为 Excel 电子表格

vba - 微软Word : Change Font of Characters Missing In Default Font