我是VBA的新手并且正在尝试为简单的趋势线图表创建动态范围,最初是为了访问组件,我在创建图表时记录了一个宏,以便我可以稍后编辑源范围以动态更改< / p>
Sub Macro10()
'
' Macro10 Macro
'
Range("B8").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
ActiveSheet.Shapes.AddChart2(227, xlLineStacked).Select
ActiveChart.SetSourceData Source:=Range("Sheet10!$B$8:$C$16808")
'ActiveChart.SetSourceData Source:=Range("Sheet6!$B$8:$C$16808")
End Sub
我的源数据是单独的表格(Sheet6),我想动态引用它来构建我的图表,在源数据中,所需的列不是彼此相邻的, 所以我试图改变Range(在注释的Source Range中)来引用那些列,关于如何实现它的任何想法?
此外,我需要它对于我想在范围内传递的两列都是动态的,以构建时间序列类型的图表。
我尝试使用下面提到的答案之一,但我的图表不正确,CuurentRegion属性是选择所有列还是仅选择相关列
data.
Sub Macro10()
'
' Macro10 Macro
'
'
Dim R As Range
Set R = Sheet6.Range("C1").CurrentRegion 'Dates for Time Series
Set R = Union(R, Sheet6.Range("F1").CurrentRegion) ' Profits for those Dates
'Range("B8").Select
'Range(Selection, Selection.End(xlDown)).Select
'Range(Selection, Selection.End(xlToRight)).Select
'ActiveSheet.Shapes.AddChart2(227, xlLineStacked).Select
'ActiveChart.SetSourceData Source:=Range("Sheet10!$B$8:$C$16808")
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.SetSourceData Source:=R
'ActiveChart.SetSourceData Source:=Range("Sheet6!$B$8:$C$16808")
End Sub
答案 0 :(得分:0)
使用选择通常不是好方法。改为在范围变量中构建单元格选择。
Dim R as Range
Set R = Range("B8", Range("B8").End(xlDown).End(xlToRight))
Set R = Union(R, Range("A1:A9")
Set R = Union(R, Range("X1:X9")
现在你可以通过这样的范围:
ActiveChart.SetSourceData Source:=R