快速Excel图表参考更改

时间:2013-04-19 17:29:25

标签: excel excel-vba excel-2010 vba

嗨,我是新网站,我希望这是一个我无法弄清楚的简单解决方案。

我有一个包含10个相同标签的工作簿,每个标签都有不同的数据。我制作了一个新标签,引用标签1来绘制我所拥有的各种数据。我正在查看大约20个图表,现​​在我想在剩下的9个选项卡上进行相同的图形分析,同时创建9个新选项卡。

我似乎只能这样做来复制图形,然后更改每个图形中的数据源,这需要数小时。是否有我缺少的东西,或者是否有一个宏可以使这更容易?

非常感谢您的回答。

1 个答案:

答案 0 :(得分:0)

我之前不得不动态添加图表。这是一个你可以搞砸的略微修改的片段。让我们说你的范围是当前表格的A1:B20,为简单起见。

Sub AddChart()
Dim ws as worksheet
For each ws in ThisWorkbook.Sheets
        'ADD CHART. . .
        ws.Shapes.AddChart.Select
        ActiveChart.SetSourceData Source:=ws.Range("A1:B20")

        'this makes the chart a certain size, fitted to a cell range.
        Dim RngToCover As Range
        Dim ChtOb As ChartObject
        Set RngToCover = ws.Range("c4:f8") 'chart will be the size of c4:f8
        Set ChtOb = ActiveChart.Parent
        ChtOb.Height = RngToCover.Height ' resize
        ChtOb.Width = RngToCover.Width ' resize
        ChtOb.Top = RngToCover.Top ' reposition
        ChtOb.Left = RngToCover.Left ' reposition


    'random other stuff I did with labels etc.
    ws.Unprotect
        ActiveChart.HasLegend = False
        ActiveChart.ChartTitle.Text = "Age Statistics"
        ActiveChart.SeriesCollection(1).ApplyDataLabels
    ws.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
            False, AllowSorting:=True

  'go to next worksheet
Next ws