Loop macro error

  • Thread starter Thread starter Kirsty
  • Start date Start date
K

Kirsty

Hi,

I am trying to write a macro that will loop through my spreadsheet until
there is no more data. I want it to start at row 7, then colour the row (or
just cells A to AD) to colour 35. I have written the macro below, however am
coming up with an error that states there is no Do when trying to run it.

Can anyone help?


Range("7:7").Select 'Set range to start point
Do While ActiveCell.Value <> ""
With Selection.Interior.ColorIndex = 35
ActiveRange.Offset(6, 0).Select
Loop

Thanks
Kirsty
 
I might be able to help, but you need more to your code to prevent an
endless loop.

For starters... to get you out of error mode, here is the fixes for what you
have posted.

Range("7:7").Select 'Set range to start point
Do
While ActiveCell.Value <> ""
With Selection.Interior.ColorIndex = 35
End With ' to end the With loop
ActiveRange.Offset(6, 0).Select
Wend ' to end the While loop
Loop

.... but this creates an endless loop. You need something inside your WHILE
loop to offset this endless state. What exactly are you trying to
accomplish? Do you want all rows on each sheet to color 35? Or do you want
just row 7 on each sheet to color 35? Please explain in further detail.

Mark Ivey
 
Delete "With" or add "End With" something like below
One more thing, there is no objects or property like ActiveRange, i think
this should be ActiveCell.

Range("7:7").Select 'Set range to start point
Do While ActiveCell.Value <> ""
With Selection
.Interior.ColorIndex = 35
ActiveCell.Offset(6, 0).Select
End With
Loop

keiji
 
Thanks Mark,

I want every 6 rows, from row 7 on the sheet to be coloured 35, but only on
the one specified worksheet
 
Kirsty,

See if this fits what you were wanting...
Let me know if this is not it.

Mark




Sub every_six_rows()
Dim LastRow As Long, i As Long, j As Long

LastRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row


For i = 7 To LastRow Step 6
For j = 1 To 30
If Cells(i, j).Value = "" Then Exit Sub

Cells(i, j).Interior.ColorIndex = 35
Next
Next
End Sub
 
Thanks Mark,

Now it is working for the first four times, then stopping, even though I
have about 300 rows of data.

Kirsty
 
You might want to try it without the empty cell exit function. See fix
below...

Mark

Sub every_six_rows()
Dim LastRow As Long, i As Long, j As Long

LastRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row


For i = 7 To LastRow Step 6
For j = 1 To 30
Cells(i, j).Interior.ColorIndex = 35
Next
Next
End Sub
 
Thanks Mark,

Works perfect

Mark Ivey said:
You might want to try it without the empty cell exit function. See fix
below...

Mark

Sub every_six_rows()
Dim LastRow As Long, i As Long, j As Long

LastRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row


For i = 7 To LastRow Step 6
For j = 1 To 30
Cells(i, j).Interior.ColorIndex = 35
Next
Next
End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

Do Until empty loop 2
Loop Macro 2
Format 6
How do I make an absolute ref in a macro able to loop? 2
looping macros 3
PrintTitleRows 2 9
Loop Repeats - PLS HELP 2
Excel macro error when workbook is shared 0

Back
Top