如何创build一个VBAmacros来绘制一个不断变化的范围?

目前,我有一个表,当新的数据被添加到电子表格时,它会自动更新。 我能够很容易地创build一个macros来绘制一个设定的范围,但是我怎样才能让它自动更新范围,以便绘制所有正确的数据? 我的目标是能够创build一个button,我可以在任何时候按下这个button,在这张桌子上运行一个macros并绘制结果。

现在,我的代码是:

Sub Macro1() ' ' Macro1 Macro ' Macro recorded 6/24/2010 by Nicole ' '' Range("R1:S12").Select Range("S12").Activate Charts.Add ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("Intakes").Range("R1:S12"),PlotBy _ :=xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Intakes" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "# Cases that day" .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With End Sub 

谢谢,

妮可

所有你需要做的不同(尽pipe它略微取决于原始单元格如何得到它的价值更新)是把你的macros在工作表变化事件,然后比较目标的兴趣范围:

 Sub Worksheet_Change(ByVal Target As Range) If Not Application.Intersect(Target, Me.Range("R1:S12")) Is Nothing Then Range("R1:S12").Select Range("S12").Activate Charts.Add ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("Intakes").Range("R1:S12"),PlotBy _ :=xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Intakes" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "# Cases that day" .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With End If End Sub 

仅供参考,find了另一个解决scheme…

我正在努力解决同样的问题:

我已经创build了一个dynamic名称来select我想要的graphics范围[整个范围],但是当我把这个名字插入graphics范围后,它立即转换回静态范围[单元格引用],不再绘制我的dynamic范围名称。

我创build了一个macros:selectgraphics,更改数据select,用我创build的dynamic名称覆盖静态单元格区域,input。

我把这个macros分配给一个“Update Graph”button,但是注意到这个macros把这个名字的范围当作静态的,而不是dynamic的。

所以这里的解决scheme:打开macros菜单,修改已创build的macros…在macros中,寻找固定的单元格范围,覆盖它'sheetname'!dynamicname

完成。 button现在应该用dynamic范围数据更新图表。

希望这可以帮助那里的人。 干杯。

一个相当简单的解决方法是使用位于公式input部分右侧的input框来使该范围成为命名范围。 这样,您可以不必将范围称为“R1:S12”,而可以通过名称Range(“MyOwnRange”)访问它。 如果您在命名范围内插入行或列,它将自动resize以包含新行。