#1   Report Post  
Posted to microsoft.public.excel.charting
external usenet poster
 
Posts: 9
Default Y axis scale macro

I have created a macro (with help from this forum) to automatically adjust
the Y axis based on the selected x axis data. The macro works but when the
macro runs it pages through all the excel sheets that I have the charts on.
Is there a change I can make to the macro so it will stay on the sheet that I
have the button on?

Here is the code for the macro:

For I = 3 To 63

sheetname = Range("'Yaxis'!$B$" & I).Value
Sheets(sheetname).Select

A = Range("'Yaxis'!$C$" & I).Value

With ActiveSheet.ChartObjects(A).Chart

With .Axes(xlValue)
.MaximumScale = Range("'Yaxis'!$D$" & I).Value
.MinimumScale = Range("'Yaxis'!$E$" & I).Value
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True

End With

End With

Next


  #2   Report Post  
Posted to microsoft.public.excel.charting
external usenet poster
 
Posts: 6,582
Default Y axis scale macro

Take out the sheets(blah).select within the loop, or take out the loop
altogether, depending on what is on each sheet.

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


"hlmrspd" wrote in message
...
I have created a macro (with help from this forum) to automatically adjust
the Y axis based on the selected x axis data. The macro works but when the
macro runs it pages through all the excel sheets that I have the charts
on.
Is there a change I can make to the macro so it will stay on the sheet
that I
have the button on?

Here is the code for the macro:

For I = 3 To 63

sheetname = Range("'Yaxis'!$B$" & I).Value
Sheets(sheetname).Select

A = Range("'Yaxis'!$C$" & I).Value

With ActiveSheet.ChartObjects(A).Chart

With .Axes(xlValue)
.MaximumScale = Range("'Yaxis'!$D$" & I).Value
.MinimumScale = Range("'Yaxis'!$E$" & I).Value
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True

End With

End With

Next




  #3   Report Post  
Posted to microsoft.public.excel.charting
external usenet poster
 
Posts: 235
Default Y axis scale macro

As Jon noted, take out all of the sheet references to get to the active
sheet. To set all the charts in the active sheet to the same min, max, and
major units, in general your macro could look something like this:

Sub ChangeScale1()
Dim Cht As ChartObject
For Each Cht In ActiveSheet.ChartObjects
With Cht.Chart.Axes(xlValue)
.MaximumScale = Range("A1").Value
.MinimumScale = Range("A2").Value
.MajorUnit = Range("A3").Value
End With
Next Cht
End Sub

If you want to change just one chart, I prefer to name each chart first and
then make the changes. To name a single chart, use:

Sub NameChart()
ActiveChart.Parent.Name = "Cht1"
End Sub

Then you can use the following to change the scale:

Sub ChangeScale2()
Dim Cht As ChartObject
Set Cht = ActiveSheet.ChartObjects("Cht1")
With Cht.Chart.Axes(xlValue)
.MaximumScale = Range("A1").Value
.MinimumScale = Range("A2").Value
.MajorUnit = Range("A3").Value
End With
End Sub

Alternatively, if you dont feel like naming the chart you can just click on
it (activate it) and use the following:

Sub ChangeScale3()
With ActiveChart.Axes(xlValue)
.MaximumScale = Range("A1").Value
.MinimumScale = Range("A2").Value
.MajorUnit = Range("A3").Value
End With
End Sub

--
John Mansfield
http://cellmatrix.net





"hlmrspd" wrote:

I have created a macro (with help from this forum) to automatically adjust
the Y axis based on the selected x axis data. The macro works but when the
macro runs it pages through all the excel sheets that I have the charts on.
Is there a change I can make to the macro so it will stay on the sheet that I
have the button on?

Here is the code for the macro:

For I = 3 To 63

sheetname = Range("'Yaxis'!$B$" & I).Value
Sheets(sheetname).Select

A = Range("'Yaxis'!$C$" & I).Value

With ActiveSheet.ChartObjects(A).Chart

With .Axes(xlValue)
.MaximumScale = Range("'Yaxis'!$D$" & I).Value
.MinimumScale = Range("'Yaxis'!$E$" & I).Value
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True

End With

End With

Next


  #4   Report Post  
Posted to microsoft.public.excel.charting
external usenet poster
 
Posts: 9
Default Y axis scale macro

I use the first macro to set the scale on the x axis for all the charts.

For the yaxis I need to change 60 charts on 12 sheets and each Yaxis is
unique.

I set up the macro to read the new min and max after I reset the xaxis. The
charts show engineering data and I usually do 30 minute runs but need the
ability to zoom the x axis in so I can evaluate problems the Y axis then
needs to re-scale so I can see where the problem is. As I stated the macro
works but it is annoying watching it flash through 12 different sheets when I
reset the yaxis.

"John Mansfield" wrote:

As Jon noted, take out all of the sheet references to get to the active
sheet. To set all the charts in the active sheet to the same min, max, and
major units, in general your macro could look something like this:

Sub ChangeScale1()
Dim Cht As ChartObject
For Each Cht In ActiveSheet.ChartObjects
With Cht.Chart.Axes(xlValue)
.MaximumScale = Range("A1").Value
.MinimumScale = Range("A2").Value
.MajorUnit = Range("A3").Value
End With
Next Cht
End Sub

If you want to change just one chart, I prefer to name each chart first and
then make the changes. To name a single chart, use:

Sub NameChart()
ActiveChart.Parent.Name = "Cht1"
End Sub

Then you can use the following to change the scale:

Sub ChangeScale2()
Dim Cht As ChartObject
Set Cht = ActiveSheet.ChartObjects("Cht1")
With Cht.Chart.Axes(xlValue)
.MaximumScale = Range("A1").Value
.MinimumScale = Range("A2").Value
.MajorUnit = Range("A3").Value
End With
End Sub

Alternatively, if you dont feel like naming the chart you can just click on
it (activate it) and use the following:

Sub ChangeScale3()
With ActiveChart.Axes(xlValue)
.MaximumScale = Range("A1").Value
.MinimumScale = Range("A2").Value
.MajorUnit = Range("A3").Value
End With
End Sub

--
John Mansfield
http://cellmatrix.net





"hlmrspd" wrote:

I have created a macro (with help from this forum) to automatically adjust
the Y axis based on the selected x axis data. The macro works but when the
macro runs it pages through all the excel sheets that I have the charts on.
Is there a change I can make to the macro so it will stay on the sheet that I
have the button on?

Here is the code for the macro:

For I = 3 To 63

sheetname = Range("'Yaxis'!$B$" & I).Value
Sheets(sheetname).Select

A = Range("'Yaxis'!$C$" & I).Value

With ActiveSheet.ChartObjects(A).Chart

With .Axes(xlValue)
.MaximumScale = Range("'Yaxis'!$D$" & I).Value
.MinimumScale = Range("'Yaxis'!$E$" & I).Value
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True

End With

End With

Next


  #5   Report Post  
Posted to microsoft.public.excel.charting
external usenet poster
 
Posts: 6,582
Default Y axis scale macro

Remove the flashing:

Application.ScreenUpdating = False
' bulk of the procedure
Application.ScreenUpdating = True

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


"hlmrspd" wrote in message
...
I use the first macro to set the scale on the x axis for all the charts.

For the yaxis I need to change 60 charts on 12 sheets and each Yaxis is
unique.

I set up the macro to read the new min and max after I reset the xaxis.
The
charts show engineering data and I usually do 30 minute runs but need the
ability to zoom the x axis in so I can evaluate problems the Y axis then
needs to re-scale so I can see where the problem is. As I stated the macro
works but it is annoying watching it flash through 12 different sheets
when I
reset the yaxis.

"John Mansfield" wrote:

As Jon noted, take out all of the sheet references to get to the active
sheet. To set all the charts in the active sheet to the same min, max,
and
major units, in general your macro could look something like this:

Sub ChangeScale1()
Dim Cht As ChartObject
For Each Cht In ActiveSheet.ChartObjects
With Cht.Chart.Axes(xlValue)
.MaximumScale = Range("A1").Value
.MinimumScale = Range("A2").Value
.MajorUnit = Range("A3").Value
End With
Next Cht
End Sub

If you want to change just one chart, I prefer to name each chart first
and
then make the changes. To name a single chart, use:

Sub NameChart()
ActiveChart.Parent.Name = "Cht1"
End Sub

Then you can use the following to change the scale:

Sub ChangeScale2()
Dim Cht As ChartObject
Set Cht = ActiveSheet.ChartObjects("Cht1")
With Cht.Chart.Axes(xlValue)
.MaximumScale = Range("A1").Value
.MinimumScale = Range("A2").Value
.MajorUnit = Range("A3").Value
End With
End Sub

Alternatively, if you dont feel like naming the chart you can just click
on
it (activate it) and use the following:

Sub ChangeScale3()
With ActiveChart.Axes(xlValue)
.MaximumScale = Range("A1").Value
.MinimumScale = Range("A2").Value
.MajorUnit = Range("A3").Value
End With
End Sub

--
John Mansfield
http://cellmatrix.net





"hlmrspd" wrote:

I have created a macro (with help from this forum) to automatically
adjust
the Y axis based on the selected x axis data. The macro works but when
the
macro runs it pages through all the excel sheets that I have the charts
on.
Is there a change I can make to the macro so it will stay on the sheet
that I
have the button on?

Here is the code for the macro:

For I = 3 To 63

sheetname = Range("'Yaxis'!$B$" & I).Value
Sheets(sheetname).Select

A = Range("'Yaxis'!$C$" & I).Value

With ActiveSheet.ChartObjects(A).Chart

With .Axes(xlValue)
.MaximumScale = Range("'Yaxis'!$D$" & I).Value
.MinimumScale = Range("'Yaxis'!$E$" & I).Value
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True

End With

End With

Next






  #6   Report Post  
Posted to microsoft.public.excel.charting
external usenet poster
 
Posts: 9
Default Y axis scale macro

That did the trick.
I'm just now getting back to the project after a long break.
Thanks for your help.

"Jon Peltier" wrote:

Remove the flashing:

Application.ScreenUpdating = False
' bulk of the procedure
Application.ScreenUpdating = True

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


"hlmrspd" wrote in message
...
I use the first macro to set the scale on the x axis for all the charts.

For the yaxis I need to change 60 charts on 12 sheets and each Yaxis is
unique.

I set up the macro to read the new min and max after I reset the xaxis.
The
charts show engineering data and I usually do 30 minute runs but need the
ability to zoom the x axis in so I can evaluate problems the Y axis then
needs to re-scale so I can see where the problem is. As I stated the macro
works but it is annoying watching it flash through 12 different sheets
when I
reset the yaxis.

"John Mansfield" wrote:

As Jon noted, take out all of the sheet references to get to the active
sheet. To set all the charts in the active sheet to the same min, max,
and
major units, in general your macro could look something like this:

Sub ChangeScale1()
Dim Cht As ChartObject
For Each Cht In ActiveSheet.ChartObjects
With Cht.Chart.Axes(xlValue)
.MaximumScale = Range("A1").Value
.MinimumScale = Range("A2").Value
.MajorUnit = Range("A3").Value
End With
Next Cht
End Sub

If you want to change just one chart, I prefer to name each chart first
and
then make the changes. To name a single chart, use:

Sub NameChart()
ActiveChart.Parent.Name = "Cht1"
End Sub

Then you can use the following to change the scale:

Sub ChangeScale2()
Dim Cht As ChartObject
Set Cht = ActiveSheet.ChartObjects("Cht1")
With Cht.Chart.Axes(xlValue)
.MaximumScale = Range("A1").Value
.MinimumScale = Range("A2").Value
.MajorUnit = Range("A3").Value
End With
End Sub

Alternatively, if you dont feel like naming the chart you can just click
on
it (activate it) and use the following:

Sub ChangeScale3()
With ActiveChart.Axes(xlValue)
.MaximumScale = Range("A1").Value
.MinimumScale = Range("A2").Value
.MajorUnit = Range("A3").Value
End With
End Sub

--
John Mansfield
http://cellmatrix.net





"hlmrspd" wrote:

I have created a macro (with help from this forum) to automatically
adjust
the Y axis based on the selected x axis data. The macro works but when
the
macro runs it pages through all the excel sheets that I have the charts
on.
Is there a change I can make to the macro so it will stay on the sheet
that I
have the button on?

Here is the code for the macro:

For I = 3 To 63

sheetname = Range("'Yaxis'!$B$" & I).Value
Sheets(sheetname).Select

A = Range("'Yaxis'!$C$" & I).Value

With ActiveSheet.ChartObjects(A).Chart

With .Axes(xlValue)
.MaximumScale = Range("'Yaxis'!$D$" & I).Value
.MinimumScale = Range("'Yaxis'!$E$" & I).Value
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True

End With

End With

Next





Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
How to draw chart: log scale on X axis, natural scale on y axis? Pratap D. chavan Charts and Charting in Excel 1 November 16th 06 08:03 AM
How do I reference x-axis or y-axis scale values to a worksheet ce retro5726 Excel Discussion (Misc queries) 0 August 10th 06 01:46 AM
How to make Primary axis and Secondary X-axis have the same scale AdamCPTD Excel Discussion (Misc queries) 0 July 14th 06 02:14 PM
Format Axis; Scale Tab; "Value Axis Crosses At" ends with preposit Pedant Charts and Charting in Excel 1 August 29th 05 03:50 AM
How to insert X axis scale values next to axis and X axis grid lin vp23larry Charts and Charting in Excel 2 June 23rd 05 03:45 PM


All times are GMT +1. The time now is 11:48 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"