Вы никогда не входите в цикл из-за того, что
For i = 2 to i = lastRow Step 2
функционально совпадает с
For i = 2 to False Step 2
Поскольку False
оценивается в 0, это действительно говорит
For i = 2 to 0 Step 2
и поэтому он никогда не входит в цикл.
Просто измените его на
For i = 2 To lastRow Step 2
РЕДАКТИРОВАТЬ:
Простодля ясности, независимо от того, оценивает ли оператор True
или False
, он все равно не войдет в цикл, поскольку False
оценивает 0
и True
оценивает -1
.