View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
JE McGimpsey JE McGimpsey is offline
external usenet poster
 
Posts: 4,624
Default What's the difference here?

The difference is when Rows(r + 1) is evaluated.

In the first case, Rows(r+1) is evaluated in line 2 and a row inserted.
Then Rows(r+1) is evaluated again to color the cell. So if r = 100, a
row would be inserted at row 101 (pushing row 101 down to row 102) then
row 101 would be formatted.

In the second, Rows(r+1) is only evaluated once. Again assuming r = 100,
..EntireRow.Insert inserts a row at row 101. In the next line however,
the reference will be to the row that was row 101 when the With
statement was executed. Since a row was inserted and row 101 forced down
a row, that reference will now be to row 102.



In article ,
"Ian Chappel" <newsATian-chappel.com wrote:

I haven't been doiung any programming for a while, so maybe I'm a bit rusty,
but why do these two snippets produce two different results?

----DOES WHAT I EXPECT----

r = ActiveCell.Row
Rows(r + 1).EntireRow.Insert
Rows(r + 1).Font.ColorIndex = 3

----COLOR'S ROW 1 FURTHER DOWN----

r = ActiveCell.Row
With Rows(r + 1)
.EntireRow.Insert
.Font.ColorIndex = 3
End With

I dare say the answer's staring me in the face, but I can't see it!