ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   For Each - loop doesn't work. (https://www.excelbanter.com/excel-programming/333184-each-loop-doesnt-work.html)

Intellihome[_31_]

For Each - loop doesn't work.
 

Hello all,

Could someone help me on this matter. Here is the code, and I don't se
why it is not working. It doesn't loop through the chart objects tha
are on the sheet.

Sub SetYScaleAllNew(AutoScale As Boolean, YMax As Long, YMin As Long)
Dim myChart As ChartObject
Dim myChartCollection As ChartObjects

numChart = Worksheets("All").ChartObjects.Count '<<< this gives m
that there are 6 of them
Set myChartCollection = Worksheets("All").ChartObjects
For Each myChart In myChartCollection
With myChart.Chart
If (AutoScale = False) Then
.Axes(2, xlPrimary).CrossesAt = YMin
.Axes(2, xlPrimary).MaximumScale = YMax
.Axes(2, xlPrimary).MinimumScale = YMin

.Axes(2, xlPrimary).MajorUnit = Abs(YMax - YMin) / 10

.Axes(2, xlPrimary).MaximumScaleIsAuto = False
.Axes(2, xlPrimary).MinimumScaleIsAuto = False

Else
.Axes(2, xlPrimary).MajorUnitIsAuto = True
.Axes(2, xlPrimary).MaximumScaleIsAuto = True
.Axes(2, xlPrimary).MinimumScaleIsAuto = True
.Axes(2, xlPrimary).CrossesAt = ActiveChart.Axes(2
xlPrimary).MinimumScale
End If
End With
Next myChart

End Sub

Thank you in advance.

Iva

--
Intellihom
-----------------------------------------------------------------------
Intellihome's Profile: http://www.msusenet.com/member.php?userid=147
View this thread: http://www.msusenet.com/t-187057402


Gary Keramidas[_2_]

For Each - loop doesn't work.
 
just a guess, did you try swapping these lines?

End With
Next myChart

--


Gary


"Intellihome" wrote in message
...

Hello all,

Could someone help me on this matter. Here is the code, and I don't see
why it is not working. It doesn't loop through the chart objects that
are on the sheet.

Sub SetYScaleAllNew(AutoScale As Boolean, YMax As Long, YMin As Long)
Dim myChart As ChartObject
Dim myChartCollection As ChartObjects

numChart = Worksheets("All").ChartObjects.Count '<<< this gives me
that there are 6 of them
Set myChartCollection = Worksheets("All").ChartObjects
For Each myChart In myChartCollection
With myChart.Chart
If (AutoScale = False) Then
Axes(2, xlPrimary).CrossesAt = YMin
Axes(2, xlPrimary).MaximumScale = YMax
Axes(2, xlPrimary).MinimumScale = YMin

Axes(2, xlPrimary).MajorUnit = Abs(YMax - YMin) / 10

Axes(2, xlPrimary).MaximumScaleIsAuto = False
Axes(2, xlPrimary).MinimumScaleIsAuto = False

Else
Axes(2, xlPrimary).MajorUnitIsAuto = True
Axes(2, xlPrimary).MaximumScaleIsAuto = True
Axes(2, xlPrimary).MinimumScaleIsAuto = True
Axes(2, xlPrimary).CrossesAt = ActiveChart.Axes(2,
xlPrimary).MinimumScale
End If
End With
Next myChart

End Sub

Thank you in advance.

Ivan


--
Intellihome
------------------------------------------------------------------------
Intellihome's Profile: http://www.msusenet.com/member.php?userid=1479
View this thread: http://www.msusenet.com/t-1870574024




Intellihome[_32_]

For Each - loop doesn't work.
 

Hi Gary,

That will be a syntax error, because WITH statement starts within FO
loop. So it should be closed within it too.

Thanks any way!!!

Iva

--
Intellihom
-----------------------------------------------------------------------
Intellihome's Profile: http://www.msusenet.com/member.php?userid=147
View this thread: http://www.msusenet.com/t-187057402


Intellihome[_33_]

For Each - loop doesn't work.
 

Ok I guess I will use my workaround in this case. But it is not th
best solution.

Here is the code when it works.

Sub SetYScaleAllNew(AutoScale As Boolean, YMax As Long, YMin As Long)


Dim myChartCollection As ChartObjects

numChart = Worksheets("All").ChartObjects.Count '<<< this gives me tha
there are 6 of them

Set myChartCollection = Worksheets("All").ChartObjects

For i=1 to numChart

With myChartCollection(i).Chart

If (AutoScale = False) Then

.Axes(2, xlPrimary).CrossesAt = YMin
.Axes(2, xlPrimary).MaximumScale = YMax
.Axes(2, xlPrimary).MinimumScale = YMin
.Axes(2, xlPrimary).MajorUnit = Abs(YMax - YMin) / 10
.Axes(2, xlPrimary).MaximumScaleIsAuto = False
.Axes(2, xlPrimary).MinimumScaleIsAuto = False

Else

.Axes(2, xlPrimary).MajorUnitIsAuto = True
.Axes(2, xlPrimary).MaximumScaleIsAuto = True
.Axes(2, xlPrimary).MinimumScaleIsAuto = True
.Axes(2, xlPrimary).CrossesAt = .Axes(2, xlPrimary).MinimumScale

End If

End With

Next i

End Sub

Let me know if you found how to fix the problem.

P.S. I still can't get EnableEvents to work, and it slows my whol
program down

--
Intellihom
-----------------------------------------------------------------------
Intellihome's Profile: http://www.msusenet.com/member.php?userid=147
View this thread: http://www.msusenet.com/t-187057402



All times are GMT +1. The time now is 01:59 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com