Re: Problems with charts, VBA and series...
From: Jon Peltier (jonxlmvpNO_at_SPAMpeltiertech.com)
Date: 02/20/04
- Next message: Tushar Mehta: "Re: Adding a table to a chart"
- Previous message: Mike: "Time-based floating bar chart"
- In reply to: J S: "Problems with charts, VBA and series..."
- Next in thread: J S: "Re: Problems with charts, VBA and series..."
- Reply: J S: "Re: Problems with charts, VBA and series..."
- Messages sorted by: [ date ] [ thread ]
Date: Fri, 20 Feb 2004 11:07:25 -0500
JS -
If you arrange the data appropriately, this exercise is not necessary.
Here's a format that will use the first row as series labels and the
first column as category labels:
Srs1 Srs2 Srs3 etc
Cat1 Data goes here
Cat2 " " "
Cat3 " " "
etc
Leave the top left cell blank, select the entire range including labels
and blank cell, and make your chart.
What error do you get? Are series 2-5 actually charted, or are their
ranges completely blank or filled with non charting error values? If VBA
can't access the series formula (even if you can see it manually), you
will get an error.
Here's a little thing I use to assign values in a range to series names
in a chart:
' ======================================================================
Sub SeriesNameAssigner()
Dim oCht As Chart
Dim oSrs As Series
Dim oRng As Range, vRng
Dim iSrsCt As Integer, iSrsIx As Integer
' Define the chart
Set oCht = ActiveChart
If oCht Is Nothing Then
MsgBox "Please select a chart, then try again", _
vbOKOnly, "Select a Chart"
Exit Sub
End If
' What range contains the names
Set oRng = Application.InputBox(Prompt:= _
"Select a range of cells containing the series names.", _
Title:="Select Series Names", Type:=8)
' Check number of series and names
iSrsCt = oCht.SeriesCollection.count
If oRng.Rows.count <> 1 And oRng.Columns.count <> 1 Then
MsgBox "Range should be in a single row or column.", _
vbOKOnly, "Incorrect Range Shape"
Exit Sub
End If
If oRng.Cells.count <> iSrsCt Then
MsgBox "Range has " & oRng.Cells.count & _
" names, but Chart has " _
& iSrsCt & " Series to name.", _
vbOKOnly, "Incorrect Range Size"
Exit Sub
End If
' Apply cell contents to series names
For iSrsIx = 1 To iSrsCt
''' Need R1C1 form for address
oCht.SeriesCollection(iSrsIx).name = _
"='" & oRng.Parent.name & _
"'!R" & oRng.Cells(iSrsIx).Row _
& "C" & oRng.Cells(iSrsIx).Column
Next
Set oRng = Nothing
Set oCht = Nothing
Exit Sub
End Sub
' ======================================================================
- Jon
-------
Jon Peltier, Microsoft Excel MVP
Peltier Technical Services
http://PeltierTech.com/Excel/Charts/
_______
J S wrote:
> I have a chart in a work***, the chart is a stacked column chart with 6
> series and I want to programmatically changed the names of each of the data
> series. I can do this just fine if I do it manually. When I use the macro
> recorder and try to run the recorded code I get the Following error: 1004
> Unable to set the Name property of the Series class
>
> I have no idea why this is the case, Interestingly enough when I use the on
> error resume next, I find that I am able to change the name of the first
> series and the sixth series with no problems but data series 2-5 all
> generate the same error.
>
> I am using excel 2000 on windows xp pro.
>
> If anybody would like a sample spread*** that demonstrates this problem
> let me. The sample code I used is pasted below.
>
> -J
>
> Sub Macro1()
> On Error Resume Next
> Sheets("Acquisition (Donor Value)").Select
> Active***.ChartObjects("Chart 2").Activate
>
> ActiveChart.SeriesCollection(1).Name = "=""a1"""
> Debug.Print "#1 " & Err.Number & " " & Err.Description
> Err.Clear
>
> ActiveChart.SeriesCollection(2).Name = "=""a2"""
> Debug.Print "#2 " & Err.Number & " " & Err.Description
> Err.Clear
>
> ActiveChart.SeriesCollection(3).Name = "=""a3"""
> Debug.Print "#3 " & Err.Number
> Err.Clear
>
> ActiveChart.SeriesCollection(4).Name = "=""a4"""
> Debug.Print "#4 " & Err.Number
> Err.Clear
>
> ActiveChart.SeriesCollection(5).Name = "=""a5"""
> Debug.Print "#5 " & Err.Number
> Err.Clear
>
> ActiveChart.SeriesCollection(6).Name = "=""a6"""
> Debug.Print "#6 " & Err.Number
> Err.Clear
> End Sub
>
>
>
>
>
- Next message: Tushar Mehta: "Re: Adding a table to a chart"
- Previous message: Mike: "Time-based floating bar chart"
- In reply to: J S: "Problems with charts, VBA and series..."
- Next in thread: J S: "Re: Problems with charts, VBA and series..."
- Reply: J S: "Re: Problems with charts, VBA and series..."
- Messages sorted by: [ date ] [ thread ]