Link to home
Start Free TrialLog in
Avatar of John Fistere
John FistereFlag for United States of America

asked on

Excel 2007 - How to specify chart min in VBA

I have an Excel page with two scatter graphs and I need to specify the vertical axis min to equal a value calculated in a sheet cell.

I am having trouble specifying the component and property to change.  I am a beginner in VBA.  I can get to the code page for the sheet that contains the graphs but I can find to reference to the graphs or their properties.  In some online material it mentions a column on the right which I think contains the info I want, but I have no such column when looking at the code page.

I could use help in two ways:  1) Tell me the code to write to specify the minimum for each of two graphs on one page and 2) Help me navigate the UI to find graphs and properties myself.

Thanks,
John Fistere
Avatar of Dave
Dave
Flag of Australia image

Something liek this to iterate through each chart on the first worksheet

I suggest you use the VBE when the code runs to see the chart (chr1) object, use VBA's intellisense to use the code options etc

Cheers

Dave
Sub GraphAxis()
Dim ws As Worksheet
Dim chr1 As ChartObject
Set ws = Sheets(1)
For Each chr1 In ws.ChartObjects
   chr1.Chart.Axes(xlValue).MinimumScale = 1.5
Next
End Sub

Open in new window

to set the x-axis value min to the cell value in A1

chr1.Chart.Axes(xlValue).MinimumScale = ws.[a1]

Open in new window

Avatar of John Fistere

ASKER

Thank you for your comments.  My actual need is to set "Graph 3" on the sheet to one value and "Graph 6" to another value.  I'm getting close to doing that.  Also, in your example, it appears necessary to set ws to the value of the current sheet.  Isn't there a way to make the sub with the current sheet implicitly, without having to specify the sheet.

The overall situation is that I have twelve sheets, one for each month and the Graph 3 minimum is in Cell D36, and the Graph 6 minimum is in D37.  I also have a sheet for the year with its minimums in the same locations.

Thanks,
John
ASKER CERTIFIED SOLUTION
Avatar of Dave
Dave
Flag of Australia image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Thanks, Dave

I couldn't get "Sub GraphAxis() to work as a header line, but this format worked:

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.ChartObjects("Chart 6").Chart.Axes(xlValue).MaximumScale = [c44].Value
ActiveSheet.ChartObjects("Chart 6").Chart.Axes(xlValue).MinimumScale = [c45].Value
End Sub

I've found I can do a better job of scaling than Excel, so I'm going to do both max and min for each graph.

I want to control other features of the graph, for example, the Title, but I have not been able to access a list of properties of graph that can be changed.  Does that have a quick and easy answer, or should I ask a new question?

Thanks and cheers,
John