View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
OssieMac OssieMac is offline
external usenet poster
 
Posts: 2,510
Default Setting axis labels

Hi Robert,

Loop through the series source range with for i = 1 to ... etc. like the
following that I extracted and modified from one of my projects. The Point i
on the chart is then is equivalent to the series source point i.

In my project I actually use an offset of the series source which is a
comment column to the right and I insert comments in the labels.

Also I have not been able to do this without activating the chart. If you
work out how to do that then let me know.

Sub InsertChartLabels()
Dim i As Long
Dim rngSeries As Range

With Sheets("Daily Data")
Set rngSeries = .Range("E5:E15")
End With

Sheets("Graph").Select
ActiveSheet.ChartObjects("Chart 1").Activate

'Following will remove any existing labels on chart
'Only use if populating selective labels say from offset comment column
'ActiveChart.SeriesCollection(1).HasDataLabels = False

'Loop through the cells of the series range
For i = 1 To rngSeries.Count 'One column for the series
'The following inserts a label at individual points
'Point(i) corresponds to data cell(i)
With ActiveChart.SeriesCollection(1).Points(i)
.HasDataLabel = True 'Turn on data label for point.
.DataLabel.Text = rngSeries.Cells(i) 'Populate data label.
.DataLabel.Font.Name = "Arial"
.DataLabel.Font.Size = 8
.DataLabel.Font.Bold = True
End With

Next i

End Sub



--
Regards,

OssieMac


"Robert H" wrote:

Thinking that I need to look at the values from a Range instead of a
String, I tried this

Dim xVal As String
Dim xValRng As Range

-code to setup xVal
results in = B!$H$1,B!$L$1,B!$P$1,B!$T$1,B!$X$1,B!$AB$1,B!$AF$1 ,B!$AJ
$1,B!$AN$1


Set xValRng = Range(xVal)

.SeriesCollection(1).XValues = xValRng.Value

this returns the value but only from the first cell in the range.

a little information gathering:

Debug.Print xValRng.Address
= $H$1,$L$1,$P$1,$T$1,$X$1,$AB$1,$AF$1,$AJ$1,$AN$1

Debug.Print xValRng.Value
= IMP_100_Hz (value of H1)

so why only the first value and not all of them?
More importantly how do I return all of them?

Any help will be appreciated
Robert







On Dec 12, 6:36 pm, Robert H wrote:
In chart creating code I am trying to set the x-axis labels using:

.SeriesCollection(1).XValues = xVal

xVal is a declared string that is basically an array of specific
column
headings selected from many.

When the chart is generated the x axis labels are the actual range
values "B!$H$1, B!P$1, etc" I need the labels to be the actual values
from the cells.

this seems a simple thing but it eludes me!