Hi zoom38,

Unfortunately SpecialCells(xlCellTypeLastCell) refers to the last cell in the used range and the used range includes all values, formulas, formatting etc. so it's not always reliable if you want to find the last row with a value in it (that's why you had difficulties).

As acw was getting at, if you have a row (say A) that always has a value in it, you can use

[vba]Rows(Range("A" & Rows.Count).End(xlUp).Row - 2).Copy[/vba]

It also depends on what you want to consider to be the last row (it's usually taken to be simply the last row with any sort of "values" in it - but you may sometimes want to find the last formula row, or the last row with a number, or the last row with text...etc.).

For more on finding the last row (or column), you could read this article

HTH