Verdade. Isso é porque a linha 5 só tem um valor na coluna A. Então, o comando de ir até a ultima coluna -> end(xltoright) vai levar À ultima coluna da planilha, que estará vazia.
Tente asim:
Sub preenchercol()
Application.ScreenUpdating = False
'O numero 2 signfica que começará a preencher a partir da segunda linha.
For i = 2 To 20
If Cells(i, 1).End(xlToRight).Column > 18 Then
Cells(i, 18).Value = Cells(i, 1).Value
Else
Cells(i, 18).Value = Cells(i, 1).End(xlToRight).Value
End If
Next
Application.ScreenUpdating = True
End Sub
PS: uma alternativa, mais simples, seria partir da coluna Q, indo para a esquerda (em vez de sair da coluna A para a direita:
Sub preenchercol()
Application.ScreenUpdating = False
'O numero 2 signfica que começará a preencher a partir da segunda linha.
For i = 2 To 20
Cells(i, 18).Value = Cells(i, 18).End(xlToLeft).Value
Next
Application.ScreenUpdating = True
End Sub
Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.
Gilmar
Postado : 26/02/2015 1:08 pm