I think you'll find that Range(Cells(1, cCol)), etc, is bad syntax. The
one-argument version of range expects a string with a range reference in it.
Just remove the Range() from around the Cells(...), e.g.
Range(Cells(1, cCol))
should be
Cells(1, cCol)
or (perversely)
Range(Cells(1, cCol).Address)
Note that the two parameter version of Range - Range(Cells(rRow + 1, 1),
Cells(rEnd, cCol)).Select - is fine.