首页 > 解决方案 > 如何引用嵌入式图表?

问题描述

我正在尝试将单元格 A1 和 B1 中的文本分配给图表标题

图表1
图表 2

图表
3 图表 4

我正在尝试遍历位于随机工作表中的特定嵌入式图表的工作簿。

我正进入(状态

“未找到成员或数据成员”

With ThisWorkbook.Worksheets.Shapes(chtname).Chart

Sub ChartTitle()

    Dim chartNames As Variant
    
    For Each chtname In Array("CHART1", "CHART2")
        With ThisWorkbook.Worksheets.Shapes(chtname).Chart
            .HasTitle = True
            .ChartTitle.Text = ThisWorkbook.Worksheets.Range("A1")
        End With
    Next

    For Each chtname In Array("CHART3", "CHART4")
        With ThisWorkbook.Worksheets.Shapes(chtname).Chart
            .HasTitle = True
            .ChartTitle.Text = ThisWorkbook.Worksheets.Range("B1")
        End With
    Next

End Sub

标签: excelvba

解决方案


由于您不回答我的问题,请尝试下一个代码。基于“位于随机表中”,代码假定讨论中的图表是嵌入式图表。由于代码ThisWorkbook.Worksheets.Range("B1")在 VBA 中没有任何意义,因此代码从其所在的工作表中分配值:

Sub ModifyChartTitle()
    Dim sh As Worksheet, chObj As ChartObject

    For Each sh In ThisWorkbook.Sheets
        For Each chObj In sh.ChartObjects
            If chObj.Chart.HasTitle Then
                Select Case chObj.Name
                     Case "CHART1", "CHART2"
                        chObj.Chart.ChartTitle.Text = sh.Range("A1").Value
                     Case "CHART3", "CHART4"
                        chObj.Chart.ChartTitle.Text = sh.Range("B1").Value
                End Select
            End If
        Next
    Next
End Sub

如果不是嵌入图表,或者必须从特定工作表中收集图表标题,请更好地指定要执行的操作...


推荐阅读