simple little loop

R

ryguy7272

I'm stuck on a simple little loop late on a Friday night:

Dim redRng As Range
Dim longrow As Long
longrow = Cells(Rows.Count, "I").End(xlUp).Row

Set redRng = Range("I4", Range("I" & longrow).End(xlUp))
For Each cell In redRng

If cell.Value <> "" Then
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=RC[-6]*RC[-7]"
ActiveCell.Offset(1, -1).Select
End If

Next cell

My loop seems to run four times and then quits. I guess it comes from the
I4, but I'm not sure why it's doing that. Is there a better, clearer, way to
do this?

Thanks,
Ryan--
 
J

JLGWhiz

Why not:

If cell.Value <> "" Then
cell.Offset(0, 1).FormulaR1C1 = "=RC[-6]*RC[-7]"
End If

The ActiveCell might not be the same as cell. You could be putting formulas
in places that you did not intend to put them. With the above code, you do
not need to use the second offset to return the focus to column I because it
never leaves it and the For next will take care of moving to the next row.
 
R

ryguy7272

I F8-through the code; I think it was just this one line:
Set redRng = Range("I4", Range("I4" & longrow).End(xlUp))

Seems to work now.
 
S

Shane Devenshire

Hi,

I generally use something like:

Range("I4:I" & [I65536].End(XLUp).Row).SpecialCells(XLCellTypeBlanks) =
yourFormula

No need to loop at all. Every formula is entered at once. No need to test
each cell one at a time.

A few points: when you use For Each you don't want to move the cursor, so
ActiveCell.Offset(0,1) is not a good idea.

The previous comment aside, ActiveCell.Offset(1, -1).Select moves the cursor
down one row and one column to the left. You are moving on the diagonal, is
that really what you want?

--
If this helps, please click the Yes button.

Cheers,
Shane Devenshire


ryguy7272 said:
I F8-through the code; I think it was just this one line:
Set redRng = Range("I4", Range("I4" & longrow).End(xlUp))

Seems to work now.


--
Ryan---
If this information was helpful, please indicate this by clicking ''Yes''.


ryguy7272 said:
I'm stuck on a simple little loop late on a Friday night:

Dim redRng As Range
Dim longrow As Long
longrow = Cells(Rows.Count, "I").End(xlUp).Row

Set redRng = Range("I4", Range("I" & longrow).End(xlUp))
For Each cell In redRng

If cell.Value <> "" Then
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=RC[-6]*RC[-7]"
ActiveCell.Offset(1, -1).Select
End If

Next cell

My loop seems to run four times and then quits. I guess it comes from the
I4, but I'm not sure why it's doing that. Is there a better, clearer, way to
do this?

Thanks,
Ryan--
 

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

Top