使用VBA替换图表数据标签中的“值来自单元格”

时间:2018-05-16 16:56:24

标签: excel vba charts

我已将多个图表从工作簿复制到另一个,我设法用vba更改数据系列。

这些图表的一些数据标签,获取数据“ From Cells ”,但此范围仍然引用第一个工作簿,我需要更改它以引用新工作簿中的新工作表

我能够获得引用“From Cells”的公式。

这是我的代码

Sub xtDataLabels_FromCells()
    Dim oChart As ChartObject
    Dim OldString As String, NewString As String
    Dim mySrs As Variant

    OldString = "'[Daily Report]SP'!$P$11:$P$20"
    NewString = "SP!$P$11:$P$20"

    For Each oChart In ActiveSheet.ChartObjects
        For Each mySrs In oChart.Chart.SeriesCollection
            ' From a recorded macro
            'ActiveChart.SeriesCollection(7).DataLabels.Format.TextFrame2.TextRange. _
                InsertChartField msoChartFieldRange, "=SP!$P$11:$P$20", 0
        Next
    Next
End Sub

“来自细胞的价值”

enter image description here

此致 埃利奥·费尔南德斯

1 个答案:

答案 0 :(得分:0)

我不认为这正是你想要的。您的代码遍历所有系列的所有图表,并且显然希望对标签使用相同的范围。这样就可以了:

Sub xtDataLabels_FromCells()
    Dim oChart As ChartObject
    Dim OldString As String, NewString As String
    Dim mySrs As Variant

    OldString = "'[Daily Report]SP'!$P$11:$P$20" ' irrelevant
    NewString = "SP!$P$11:$P$20"

    For Each oChart In ActiveSheet.ChartObjects
        For Each mySrs In oChart.Chart.SeriesCollection
            ' From a recorded macro
            mySrs.DataLabels.Format.TextFrame2.TextRange. _
                InsertChartField msoChartFieldRange, "=" & NewString, 0
        Next
    Next
End Sub

如果你想做一个Find&amp;替换现有的图表字段,我担心你运气不好。您可以使用VBA使用InsertChartField 设置图表字段,但您无法使用VBA 读取现有图表字段中的内容。< / p>

VBA对象模型for Excel图表的另一个缺点。