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

Excel 替换“;“来自单元格的值”;使用VBA在图表中添加数据标签,excel,vba,charts,Excel,Vba,Charts,我已将多个图表从工作簿复制到另一个工作簿,并使用vba更改了数据系列 这些图表的某些数据标签,从单元格中获取数据“”,但此范围仍在引用第一个工作簿中的数据,我需要将其更改为引用新工作簿中的新工作表 我能够得到引用“来自细胞”的公式 这是我的密码 Sub xtDataLabels_FromCells() Dim oChart As ChartObject Dim OldString As String, NewString As String Dim mySrs As Va

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

这些图表的某些数据标签,从单元格中获取数据“,但此范围仍在引用第一个工作簿中的数据,我需要将其更改为引用新工作簿中的新工作表

我能够得到引用“来自细胞”的公式

这是我的密码

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
“来自单元格的值”

问候,,
埃利奥·费尔南德斯

我不认为这正是你想要的。您的代码在所有图表的所有系列中循环,显然希望对标签使用相同的范围。这可以做到:

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
如果您想查找并替换现有的图表字段,恐怕您运气不好。您可以使用VBA使用
InsertChartField
设置图表字段,但不能使用VBA读取现有图表字段中的内容


这只是Excel图表的VBA对象模型的另一个缺点。

什么是“来自单元格”?命名范围?字面意义的?“来自单元格”的代码在哪里?我刚刚用一张图片更新了我的帖子,参考“标签选项->来自单元格的值”,我不知道这是否适合你,但你可以创建独立于工作表数据的图表。你可以复制和粘贴这样的图表到任何你想要的地方-数据将与它一起。至于你的图表,你需要用表格参考来限定你的范围。我真的很希望我能找到并替换一个图表字段。谢谢你,乔恩。我非常喜欢你们的网站,我学到了很多。