Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / Charting / October 2006

Tip: Looking for answers? Try searching our database.

Add chart - what is wrong with the code?

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
tskogstrom - 23 Oct 2006 14:29 GMT
Hi,
Can anybody find what is wrong with this code? It will just make a
empty chartobject. I believe the ranges are ok, it probably is some bad
syntax or object reference...

The code should make a chart with two series of xlColumnClustered and
one serie of xlLineMarkers.

Thank you
/tskogstrom
---------------------------------------
CODE:

Sub UppdateChartCF()
Dim cht As Chart
Set cht = Sheet1.ChartObjects("R_CF").Chart

On Error Resume Next '(if no chartobject)
Sheet1.ChartObjects("R_CF").Delete
On Error GoTo EndCode

'Left and Top location = named ranges
With Sheet1.ChartObjects.Add(Range("RAPP_BASE_CHT_CF").Left, _
Range("RAPP_BASE_CHT_CF").Top, 468, 260)
   .Name = "R_CF"
End With

With cht
   .SetSourceData Sheet2.Range("CHT_CF_RNG"), PlotBy = xlRows
   .HasTitle = True
   .ChartTitle.Characters.Text = "Some Title text"
   .Axes(xlCategory, xlPrimary).HasTitle = False
   .Axes(xlValue, xlPrimary).HasTitle = False
End With

With cht.SeriesCollection.NewSeries
       .Name = Sheet2.Range("CHT_R_INVEST")
       .Values = Sheet2.Range("CHT_" &
Sheet1.Range("SCENARIO_NO").Value & "CF" & _
             Sheet1.Range("RAPP_TILLF").Value & "_INVESTAR")
       .ChartType = xlColumnClustered
       .Fill.TwoColorGradient Style:=msoGradientVertical, Variant:=3
       .Fill.Visible = True
       .Fill.ForeColor.SchemeColor = 3
       .Fill.BackColor.SchemeColor = 2
   End With
   With cht.SeriesCollection.NewSeries
       .Name = Sheet2.Range("CHT_R_EFF")
       .Values = Sheet2.Range("CHT_" &
Sheet1.Range("SCENARIO_NO").Value & "CF" & _
               Sheet1.Range("RAPP_TILLF").Value & "_EFFEKTAR")
       .ChartType = xlColumnClustered
       .Fill.TwoColorGradient Style:=msoGradientDiagonalUp, Variant:=3
       .Fill.Visible = True
       .Fill.ForeColor.SchemeColor = 58
       .Fill.BackColor.SchemeColor = 34
   End With
   With cht.SeriesCollection.NewSeries
       .Values = Sheet2.Range("CHT_" &
Sheet1.Range("SCENARIO_NO").Value & "CF" & _
                Sheet1.Range("RAPP_TILLF").Value & "_PAYBACK")
       .Name = Sheet2.Range("CHT_R_PAYBACK")
       .ChartType = xlLineMarkers
   End With
   Sheet1.DrawingObjects("R_CF").RoundedCorners = True

'Format Border
   With cht.ChartArea.Border
       .ColorIndex = 37
       .Weight = 1
       .LineStyle = 1
   End With
   Sheet1.DrawingObjects("R_CF").RoundedCorners = True

EndCode:
On Error GoTo 0
End Sub
Jon Peltier - 23 Oct 2006 22:46 GMT
See my annotations to your code below.

You define cht in line [A], then delete the chart it refers to in line [B].
You do not redefine cht, but reference it again in line [C]. This causes the
error that sends you to EndCode.

You really don't need line [A] at the top. Move it to just above line [C].

Also, you should step through your code to find issues like this. Put your
cursor in the procedure in the VB Editor and press F8 to execute one step.
The next line to be executed will be highlighted yellow, so you will be able
to follow program flow.

- Jon
-------
Jon Peltier, Microsoft Excel MVP
Tutorials and Custom Solutions
http://PeltierTech.com
_______

> Hi,
> Can anybody find what is wrong with this code? It will just make a
[quoted text clipped - 11 lines]
> Sub UppdateChartCF()
> Dim cht As Chart
[A] Set cht = Sheet1.ChartObjects("R_CF").Chart

> On Error Resume Next '(if no chartobject)
[B] Sheet1.ChartObjects("R_CF").Delete
> On Error GoTo EndCode
>
[quoted text clipped - 3 lines]
>    .Name = "R_CF"
> End With

[C] With cht
>    .SetSourceData Sheet2.Range("CHT_CF_RNG"), PlotBy = xlRows
>    .HasTitle = True
[quoted text clipped - 45 lines]
> On Error GoTo 0
> End Sub
tskogstrom - 24 Oct 2006 09:18 GMT
Thanks, I'll look into this.
I have some more charts- it might be a lot of code to arrange this.
Maybe I will do a routine to copy-paste a unvisible template instead,
if the user want it by button or the chart is deleted.

What would you do?

/Regards
tskogstrom

Jon Peltier skrev:

> See my annotations to your code below.
>
[quoted text clipped - 93 lines]
> > On Error GoTo 0
> > End Sub
Jon Peltier - 24 Oct 2006 17:22 GMT
If the number of series in the chart are the same, I might just change the
source data of each.

Here's an example for one series:
   With cht.SeriesCollection(1)
       .Name = Sheet2.Range("CHT_R_INVEST")
       .Values = Sheet2.Range("CHT_" & _
           Sheet1.Range("SCENARIO_NO").Value & "CF" & _
           Sheet1.Range("RAPP_TILLF").Value & "_INVESTAR")
   End With

In any case, though the formatting code can be streamlined, it's not really
excessive. Templates are good too, if you can ensure that the user doesn't
mess around with them. User defined chart types are also a good choice, if
they work on that machine (mine are broken).

- Jon
-------
Jon Peltier, Microsoft Excel MVP
Tutorials and Custom Solutions
http://PeltierTech.com
_______

> Thanks, I'll look into this.
> I have some more charts- it might be a lot of code to arrange this.
[quoted text clipped - 111 lines]
>> > On Error GoTo 0
>> > End Sub
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.