Excel 2010 VBA – 使用由variables定义的范围更新图表

我有一个每天更新的Excel工作表。 我正在尝试使用每天添加的新数据(1行)自动更新图表。

到目前为止我有:

Sub UpdateGraphs() Dim latestRow As Integer Sheets("DailyJourneyProcessing").Select Range("A500").Select Do Until ActiveCell.Value = "" If ActiveCell.Value <> "" Then ActiveCell.Offset(1, 0).Select End If Loop ActiveCell.Offset(-1, 0).Select Application.CutCopyMode = False ActiveCell.EntireRow.Copy ActiveCell.Offset(1, 0).Select ActiveCell.EntireRow.PasteSpecial (xlPasteAll) Application.CutCopyMode = False latestRow = ActiveCell.row Dim str1 As String Dim rng1 As Range str1 = "=DailyJourneyProcessing!$F$180:$F$" & latestRow Set rng1 = Range(str1) Debug.Print "Got this far..." Set ActiveChart.SeriesCollection(1).Values = Range(str1) 

我知道,这看起来像我只是复制前一行,但公式的包括了数据的变化车。

现在的整数/行大约是520,所以我想这样做:

 ActiveChart.SeriesCollection(1).Values = "=DailyJourneyProcessing!$F$180:$F$520" 

行号每天更改。 这是我需要自动化的20个范围更新之一,但是一旦我解决了其他问题,其他人应该是一样的。

我已经尝试了一切,我可以在网上find,但没有任何工作。

此刻,我得到一个运行时错误91:对象或块variables未设置。

任何帮助,将不胜感激。

实际上VBA没有必要完成这个任务。 你会发现这个链接的方法比VBA代码更容易pipe理和维护。 另外,当你不需要的时候,最好不要使用VBA!

但是,为了让您看到更有效的方法来编写您正在尝试执行的操作,我提供了下面的代码。 这很可能需要一些调整,以适应您的实际数据集。

 Sub UpdateGraphs() Dim wks As Worksheet, rng1 As Range Dim latestRow As Long ' changed to long to handle rows over 32,000 (whatever number Integer stops at) Set wks = Sheets("DailyJourneyProcessing") With wks latestRow = .Range("F" & .Rows.Count).End(xlUp).Row str1 = "=DailyJourneyProcessing!$F$180:$F$" & latestRow Set rng1 = Range(str1) Dim myChart As Chart Set myChart = .ChartObjects("myChartName") myChart.SeriesCollection(1).Values = rng1 End With End Sub