使用VBA宏设置Excel图表数据范围

时间:2013-06-14 09:32:49

标签: excel vba charts

我正在尝试使用宏设置图表对象的数据集。宏选择了我想要的正确范围(我通过使用rng.Select和debugging进行检查)但是当我在宏运行完毕后右键单击图表对象并选择选择数据时,它表示数据范围太复杂而无法显示没有正确填充我的图表。我的宏在下面。任何指针都赞赏。

EDIT。我有一个工作表的副本,其中图表是从手动填充的数据创建的,单击此图表上的选择数据显示非连续范围就好了 - 只有在尝试通过宏为预先存在的图表设置它时才会这样做不起作用。

Sub test()

UpdateChart 27, 64

End Sub

Sub UpdateChart(ByVal row As Long, ByVal col As Long)

Dim sht As Worksheet
Set sht = Worksheets("Report4_Chart")
Dim data As Worksheet
Set data = Worksheets("Report4")
Dim rng As Range
Dim exclude As Range

data.Activate

Set exclude = data.Rows(25)
Set rng = data.Range("A24", Intersect(data.Rows(row), data.Columns(col)))
Set rng = SetDifference(rng, exclude)
rng.Select

sht.Activate

ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.PlotArea.Select
ActiveChart.SetSourceData Source:=rng

End Sub

enter image description here

1 个答案:

答案 0 :(得分:0)

对于遇到这个老问题的其他人:我刚刚发现,基于非连续范围的图表似乎只有在范围形成时才能工作  一个矩形。

例如,我试图将单元格A1,A7和C1分组,但无法使其工作。但是,当我使用A1,C1,A7和C7时,它确实有效。

(实际上,我的范围都大于单个细胞。但是"缺失"范围与其上方的范围相同,并且与其侧面的宽度相同。因此组合范围形成一个矩形。)