That's why. When you say this:
Dim startCell, iCell As Range
you think you did it:
Dim startCell As Range, iCell As Range
but you really did it:
Dim startCell 'As Variant, by default
Dim iCell As Range
VBA. VBA , VBA Dim ( ). , , .
, Dim startCell Variant ( Dim startCell As Variant).
:
Set startCell = Cells(iCell.Row + 1, iCell.Column)
(Range). , :
startCell = Cells(iCell.Row + 1, iCell.Column)
Set , startCell, . ? , Range - Value, Cells(iCell.Row + 1, iCell.Column).Value. , .