如何将循环范围实现为图表

时间:2019-07-11 15:38:20

标签: excel vba

基本上,我试图将我的工作任务之一自动化到一个宏中,该宏将获取一些数据并将其放入5系列簇状柱形图中,从而以视觉上吸引人的方式呈现信息。问题是范围长度每周变化一次,具体取决于所处理零件的数量。添加系列值时,我只是遇到一个小错误,因为excel不接受我的字符串参数。以下是我所拥有的。


Sub FilterRankAndCreateChart()
Dim i As Integer
Dim rnge As String

i = 0

Sheets("MC Spares Risk Calculations").Select
Range("A1").Select
Do Until ActiveCell.Value = ""
    ActiveCell.Offset(1, 0).Select
    i = i + 1
Loop

Let rnge = "$J$2:$J$" & i

Worksheets("MC Risk Chart").Activate
ActiveSheet.ChartObjects(1).Activate
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.FullSeriesCollection(1).Name = "=""Low Risk"""
    ActiveChart.FullSeriesCollection(1).Values = "='Risk Charts'!rnge"
    ActiveChart.FullSeriesCollection(1).XValues = "='Risk Charts'!$B$2:$B$149"

立即窗口中显示的rnge值正确。但是,当我使用rnge定义值时,出现1004错误(应用程序或对象定义的错误)。有关如何解决此问题的任何见解?

1 个答案:

答案 0 :(得分:0)

只需结束这个问题即可

1:如前所述,无需循环即可找到最后一个单元格。

2:从文档中,Series.Values可以使用Range对象。与Series.XValues相同。

With Worksheets("MC Spares Risk Calculations")
    Dim lastRow as Long
    lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row

    Dim rng as Range
    Set rng = .Range("J2:J" & lastRow)
End With

With Worksheets("MC Risk Chart").ChartObjects(1).Chart
    ...
    .FullSeriesCollection(1).Values = rng
    .FullSeriesCollection(1).XValues = rng2 ' another Range object
End With