![]() |
|
#1
|
|||
|
|||
![]()
Hi
Sure enough your posted code "as is" won't even work under excel 2003, that's because: chart.Chart.SetSourceData Source:=ActiveSheet.Range("A1:FA6") has to be: chartt.Chart.SetSourceData Source:=ActiveSheet.Range("A1:FA6") Otherwise you walk on thin ice: You're using the chart's name given by excel. Excel itself names chart according to the number of charts within a Sheet, for the first chart the name will be "Chart 1". Now regardless if the first chart still exists, the next chart created will be called "Chart 2". - and so on... So just check the name of the chart to be modified, if it's indeed "Chart 1" if not so you will have to rename the chart, or correct your code. See if the error renames, in case tell me which line of the code is marked by the debugger. But maybe above already helped! |
#2
|
|||
|
|||
![]()
Hi whatsup,
Thanks for taking some time to look at this problem. I have to apologize for posting the wrong code in my original question. Please find an updated version of the code that you can insert in a new module in a new Excel Workbook and test it. Code:
Sub setDataChart() Call createAColValues ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlXYScatterSmoothNoMarkers ActiveChart.SetSourceData Source:=Range("A1:FA6"), PlotBy:=xlColumns ActiveSheet.ChartObjects(1).Activate With ActiveChart.Parent .Height = 325 .Width = 900 .Top = 120 .Left = 10 End With Call updateValues Call sendData End Sub Sub sendData() Dim cht As ChartObject Set cht = ActiveSheet.ChartObjects(1) 'On Error GoTo delSeries: For i = 0 To 1000 cht.Chart.SetSourceData Source:=ActiveSheet.Range("A1:FA6"), PlotBy:=xlColumns Next i End Sub Sub createAColValues() Range("A1").Select ActiveCell.FormulaR1C1 = "1" Range("A2").Select ActiveCell.FormulaR1C1 = "2" Range("A1:A2").Select Selection.AutoFill Destination:=Range("A1:A6"), Type:=xlFillDefault Range("A1:A6").Select End Sub Sub updateValues() Range("B1").Select ActiveCell.FormulaR1C1 = "=RANDBETWEEN(0,10)" Range("B1").Select Selection.AutoFill Destination:=Range("B1:B6"), Type:=xlFillDefault Range("B1:B6").Select Selection.AutoFill Destination:=Range("B1:FA6"), Type:=xlFillDefault Range("B1:FA6").Select End Sub Many thanks. |
#3
|
|||
|
|||
![]()
Pocerus, what's the loop for?
I don't see the point to set the source of a chart again and again to the same Range! Can you explain what you are after? |
#4
|
||||
|
||||
![]()
Quite.
Is this what you're looking to do? (all subs rolled into 1): Code:
Sub setDataChart() Range("A1").Value = 1 Range("A1:A6").DataSeries With ActiveSheet.Shapes.AddChart .Chart.ChartType = xlXYScatterSmoothNoMarkers .Height = 325 .Width = 900 .Top = 120 .Left = 10 Range("B1:FA6").Formula = "=RANDBETWEEN(0,10)" For i = 2 To 157 .Chart.SetSourceData Source:=Union(Range("A1:A6"), Range("A1:FA6").Columns(i)) Application.ScreenUpdating = True MsgBox "OK to continue…" Next i End With End Sub |
![]() |
Tags |
seriescollection, setsourcedata, vba |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Run Time Error '1004' | galkej | Excel | 0 | 02-03-2014 06:39 AM |
![]() |
doctor_who12 | Excel Programming | 1 | 01-22-2014 04:47 PM |
paste fails error 1004 in VBA Excel 2010 | mikec | Excel Programming | 17 | 05-08-2013 03:11 PM |
![]() |
yonasan | Excel Programming | 3 | 06-12-2012 11:08 PM |
![]() |
gbaker | Excel Programming | 11 | 06-06-2012 05:23 AM |