Hi
I am using the Excel 2013
I have to change in select data the Specify Order For Series collection in Select Data for Chart
=SERIES([Series Name],[X Values],[Y Values],[Plot Order])
I have to change the "Holder" series collection from 5th to 1st move
I actually did something similar. I put "ActiveChart.SeriesCollection(5).PlotOrder = 1" for the first data series, but it doesn't work that way.
when i run the vba code "ActiveChart.SeriesCollection(5).PlotOrder = 1", but this go 3rd position the "Holder".
I don't know, what I am wrong my VBA code... but not working
We need that the "Holder" series move from 5th to 1st position (Untitled image and VBA code Excel enclosed for your reference)
Kindly correction the VBA code
Thanks for Help....
Hello,
If you could load a workbook with a sample, it would be much easier, but I will try to help
a lot of data is missing about how data is organized in your spreadsheet, how it is obtained and what type of chart you are using example:
1 - assuming you have the data on the sheet and a command button on the sheet (that is, you don't use a user form to display the graph)
2 - I suppose it has only 5 series
3 - I used this type of graph ( xlColumnClustered )
' place the following procedure on the sheet module
Private Sub CommandButton1_Click()
Dim myChartObj As ChartObject Dim i As Long Dim NewChartOrder As Variant ' will be for the new series order Dim OldChartOrder(0 To 4) As String ' if you have 5 series, you will have to write like this
Application.ThisWorkbook.Worksheets("Sheet1").Activate
If Not ChartExists(Application.ThisWorkbook.Worksheets("Sheet1"), "MyChartName") Then
' Chart not exist
Exit Sub
End If
Set myChartObj = Application.ThisWorkbook.Worksheets("Sheet1").ChartObjects("MyChartName")
myChartObj.Activate
' MsgBox ActiveChart.SeriesCollection.Count ' if you want to know how many series your chart has
NewChartOrder = Array(5, 1, 2, 3, 4) ' this will be the order of the series, each time you click the command button, series 5 moves back one position
' if you want to have the order immediately of 5,1,2,3,4 activate the following line of code and disable the previous one to this information
' NewChartOrder = Array(2, 3, 4, 5, 1)
With ActiveChart
For i = LBound(NewChartOrder) To UBound(NewChartOrder)
OldChartOrder(i) = .SeriesCollection(i + 1).Name
Next i
For i = LBound(NewChartOrder) To UBound(NewChartOrder)
.SeriesCollection(OldChartOrder(i)).PlotOrder = NewChartOrder(i)
Next i
End With
If Not myChartObj Is Nothing Then Set myChartObj = Nothing
End Sub
' place the following procedure on standart module
Public Function ChartExists(wsTest As Worksheet, strChartName As String) As Boolean ' chart name exist ?
Dim chTest As ChartObject
On Error Resume Next
Set chTest = wsTest.ChartObjects(strChartName)
On Error GoTo 0
If chTest Is Nothing Then
ChartExists = False
Else
ChartExists = True
End If
End Function
Regards,
Miguel