|
|||||||||||||||||||||
|
#1
|
|||
|
|||
|
Update Chart data Range with VBA
Hi,
I do have approx 50 charts (with multiple series) in 1 workbook (excel 97) which show monthly data. I would like to update the chart data range to show always to the last 12 months of data by running once a month a macro. I would like to do with VBA and not with named ranges (as the latter means that I have to re-setup all graphs with named ranges). To do this I would like to read-out the current XValues and Values of the SeriesCollection(i) (see below) into a string or range and brake up the string and alter this to a new range and update the Seriescollection again. I have listed below part of the loop to update all charts; but I the code does not accept the tempString or tempRange as declared below. However I can set the XValues and Value properties in VBA (also shown below) How should I proceed? Dim tempString As String Dim tempRange As Range ActiveSheet.ChartObjects("Chart 15").Activate ActiveChart.SeriesCollection(1).Select ActiveChart.ChartArea.Select tempString = ActiveChart.SeriesCollection(1).XValues tempRange = ActiveChart.SeriesCollection(1).XValues ActiveChart.SeriesCollection(1).XValues = "=Datasheet!R4C19:R4C31" ActiveChart.SeriesCollection(1).Values = "=Datasheet!R59C19:R59C31" Thanks for any help, Roger |
|
#2
|
|||
|
|||
|
Re: Update Chart data Range with VBA
I would still recommend a dynamic name such as last12 on the sheet
=offset($a$1,counta($a:$a)-12,0,12,1) or use a sub to do it for you Sub setname() ActiveWorkbook.Names.Add Name:="Last12", RefersTo:= _ "=OFFSET(ThisWorks!$a$1,COUNTA(ThisWorks!$a:$a)-12,0,12,1)" End Sub and use this just ONCE to set the series for you without activation Sub setnewseries() Sheets("yoursheet").ChartObjects("Chart 1").Chart _ .SeriesCollection(1).Values = "=yourworkbookname.xls!Last12" End Sub Should be automatic from now on. -- Don Guillett SalesAid Software donaldb@281.com "Roger" <rogerjanssen@yahoo.com> wrote in message news:1b129d1c.0504100255.ccb08b9@posting.google.com... > Hi, > > I do have approx 50 charts (with multiple series) in 1 workbook (excel > 97) which show monthly data. I would like to update the chart data > range to show always to the last 12 months of data by running once a > month a macro. > > I would like to do with VBA and not with named ranges (as the latter > means that I have to re-setup all graphs with named ranges). To do > this I would like to read-out the current XValues and Values of the > SeriesCollection(i) (see below) into a string or range and brake up > the string and alter this to a new range and update the > Seriescollection again. > > I have listed below part of the loop to update all charts; but I the > code does not accept the tempString or tempRange as declared below. > However I can set the XValues and Value properties in VBA (also shown > below) > > How should I proceed? > > > Dim tempString As String > Dim tempRange As Range > > ActiveSheet.ChartObjects("Chart 15").Activate > ActiveChart.SeriesCollection(1).Select > ActiveChart.ChartArea.Select > tempString = ActiveChart.SeriesCollection(1).XValues > tempRange = ActiveChart.SeriesCollection(1).XValues > > > > ActiveChart.SeriesCollection(1).XValues = "=Datasheet!R4C19:R4C31" > ActiveChart.SeriesCollection(1).Values = > "=Datasheet!R59C19:R59C31" > > > Thanks for any help, > Roger |
![]() |
| Bookmarks |
New topics in Excel Charting
|
|
|
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|