2017-06-06 115 views
0

我正在尝试在图表上绘制多个命名范围。这些命名范围(名为例如Time_Series_1)的形式为:
=INDIRECT(Ranges!$AJ$3)哪里这种说法Ranges!$AJ$3是例如使用命名范围的多行VBA

="'Source Data'!"&ADDRESS(N3,(Comparisons!$G$28+5))&":"&ADDRESS(N3(Comparisons!$I$28+5)) 

我试图用它来绘制这些范围的代码(我已经开始与一个因为任何更多仍然是不可能的,因为一个不工作)是:

Sheets("Comparisons").Select 
Sheet10.ChartObjects("Chart 2").Activate 

Set Rng = range("Time_Series_1") 
Set Date_Rng = range("Time_Series_Dates_1") 

With ActiveChart 
    .SetSourceData Source:=Rng 
    .XValues = Date_Rng 
End With 

它不工作!该图表保持空白。完全空白。我没有更新什么?我没有激活什么?

感谢

+0

感谢白先生! ! – user8118201

+0

什么是Sheet10? – RADO

+0

只是表格编号,这样的引用相当于表格(“比较”),只是我很懒。对不起 – user8118201

回答

0

我没有测试模型的方式,但试试这个:

Dim Chart_Sheet As Worksheet 
Dim My_Chart As ChartObject 
Dim Rng As Range 
Dim Date_Rng As Range 

Set Chart_Sheet = ThisWorkbook.Sheets("Comparisons") 
Set My_Chart = Chart_Sheet.ChartObjects("Chart 2") 
Set Rng = Range("Time_Series_1") 
Set Date_Rng = Range("Time_Series_Dates_1") 

With My_Chart.Chart 
    .SetSourceData Source:=Rng 
    .SeriesCollection(1).XValues = Date_Rng 
End With 

(我假设你的间接引用正常工作)

+0

嗨RADO我得到“对象不支持这个属性或方法”的运行时错误?!?奇怪的!我不知道发生了什么事! – user8118201

+0

我们可以使用通常的ActiveChart.SeriesCollection(1).Values = Rng方法来命名范围吗?不可能吗? – user8118201

+0

您不需要使用ActiveChart,VBA允许直接操作图表对象,而无需激活。 – RADO

0
ActiveChart.SeriesCollection(1).XValues = Date_Rng 
ActiveChart.SeriesCollection(1).Values = Rng 
ActiveChart.Axes(xlCategory, xlPrimary).HasTitle = True 
ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Dates" 
ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True 
    ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Pounds" 
ActiveChart.Axes(xlCategory).HasMajorGridlines = True 
+0

可能不是最有效或最佳 – user8118201

+0

再次尝试我的代码,它的工作原理 - 我只是测试它成功 – RADO

+0

它的确如此。干杯好友!我还没有投票,但给了你一个勾号 – user8118201