View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
JLGWhiz[_2_] JLGWhiz[_2_] is offline
external usenet poster
 
Posts: 1,565
Default For statement behaving very strangely

Either of these should work.


Sub TTS_HideRowsTest()
Dim MyRow As Long, sh As Worksheet
Set sh = Sheets("Budget Input
With sh
MyRow = 0
For MyRow = 6 To 250
If sh.Cells(MyRow, "AB").Value = 0 Then
Rows(MyRow).Hidden = True
End If
Next
End Sub

Or with dynamic range.

Sub TTS_HideRowsTest()
Dim MyRow As Long, Dim sh As Worksheet
Dim lr As Long
Set sh = Sheets("Budget Input")
lr = sh.Cells(Rows.Count, "AB").End(xlUp).Row
For Each c In sh.Range("AB6:AB" & lr)
If c.Value = 0 Then
Rows(c.Row).Hidden = True
End If
Next
End Sub





"michael.beckinsale" wrote in message
...
Hi All,

The following For...Next statement appears to be giving the incorrect
results. My original code was to loop through rows 6 to 1200 in column
AB and hide each row whre the value was 0. I found that the 1st 900 or
so rows did not appear to be evaluated but the remaining 300 did and
the rows were hidden. Further testing and use of the immediate window
showed that indeed this was true. If l change the number of rows as
being 6 to 100 and/or 6 to 250 all rows are evaluated as expected. As
soon as l increase the number of rows above 250 l get unexpected
results. Does anybody know what is causing this? I have used this sort
of code structure many times without any problems.

Sub TTS_HideRowsTest()
Dim MyRow As Long
Sheets("Budget Input").Activate
MyRow = 0
For MyRow = 6 To 250
Debug.Print Cells(MyRow, "AB").Address
Next
End Sub

Regards

Michael