Вторая у вас есть только последняя ячейка в диапазоне, которая, как я полагаю, будет у меня A5 из первого примера. Вместо этого вам нужно сделать что-то вроде этого.
Я структурировал это как небольшой тест, чтобы вы могли видеть первый вариант, исправленный второй и пример того, как я бы предпочел сделать это.
Option Explicit
Sub test()
Dim r As Range
Dim x As Range
' Make sure there is stuff in Range("A1:A5")
Range("A1") = 1
Range("A2") = 2
Range("A3") = 3
Range("A4") = 4
Range("A5") = 5
' Your first option
For Each x In Range("A1:A5")
Debug.Print x.Address & ", " & x
Next
' What you need to do to get the full range
For Each x In Range("A1", Range("A1").End(xlDown))
Debug.Print x.Address & ", " & x
Next
' My preferred method
Set r = Range("A1").End(xlDown)
For Each x In Range("A1", r)
Debug.Print x.Address & ", " & x
Next
End Sub