problem with offset -how to re-write line?

P

PBcorn

The following very simple code generates a 1004 error (* indicates line).
Help required! Thanks. I think the problem may be due to the fact that he
usedrange starts from row 1, therefore during the AND logical test offset(-1)
refers to a row that does not exist. However I am unsure of the best way to
re-write this. The purpose of the AND test is to ignore rows that have just
been inserted, otherwise the macro inserts multiple rows above cll.


subxy()

dim cll as range
dim sht as worksheet

'for each sheet in workbook

for each sht in thisworkbook.worksheets

'for each cell in column 2 of the usedrange


For Each cll In sht.UsedRange.Columns(2).Cells

' if the value of the cell is "xy", and the cell above it is not 0, insert a
row.
If cll.Value = "xy" And cll.Offset(-1, 0).value <> 0 Then*

cll.EntireRow.Insert

Else: End If
Next cll

next sht

end sub
 
P

Peter T

Various ways -

For Each cll In sht.UsedRange.Columns(2).Cells
if cll.row >= 2 then

In theory the UR might start in row 2 or lower and I don't suppose you'd
want to process the first row, even if it doesn't fail

for each sht in thisworkbook.worksheets
bFlag = True
For Each cll In sht.UsedRange.Columns(2).Cells
If bFlag then
bFlag = false
else
' code to check and insert etc
End if

Another thing, do you want to process sheets in which the UR is only one
column, eg an empty sheet. If not, skip the sheet if
sht.UsedRange.Columns.Count < 2

Regards,
Peter T
 

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