psmerlo, quando respondi me atentei mais a linha que dizia estar com problema e não reparei que mais abaixo tinha a instrução PASTE sem ter o COPY antes.
Mas antes de continuar, você não precisa ficar utilizando as instruções :
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
Nas instruções acima, a primeira você está orientando para a partir da Celula Selecionada, selecionar a última celula preenchida na Coluna e depois Selecionar uma abaixo, então, podemos fazer isto de varias maneiras, mas como você já está utilizando antes a instrução myrange(1, 1).Select, elas podem ser trocadas por uma das linhas abaixo :
ActiveCell.End(xlDown).Offset(1, 0).Select
ous
Selection.End(xlDown).Offset(1, 0).Select
E nas linhas abaixo :
Range(Selection, Selection.End(xlDown)).Copy
Range(Selection, Selection.Offset(0, 14)).Copy
A primeira você está orientando para Copiar da Celula Selecionada até a última celula preenchida na Coluna, e depois, na segunda para copiar novamente as Colunas à Direita.
Então elas podem ser trocadas por esta:
Range(Selection.End(xlDown), Selection.Offset(0, 14)).Copy
Para que você possa entender melhor o que estas instruções fazem, procure seguir a macro Passo a Passo, diminua a janela do editor de macros para que possa ver a tela do excel no fundo, depois posicione o mouse no titulo da macro e vá teclando "F8" verá que a macro iniciará e irá sendo executada cada vez que tecllar "F8" e com isto verá as ações sendo executadas na planilha.
E para entender um pouco mais sobre as instruções que coloquei acima, de uma olhada no link abaixo:
Como selecionar células/intervalos usando procedimentos do Visual Basic no Excel
http://support.microsoft.com/kb/291308/pt-br
Finalizando, pelo que entendi, coloco a sua macro completa e ajustada, logicamente que poderia estar reescrevendo de varias formas, mas optei por esta para entender melhor:
Sub CopiarColarMauro()
'Copiar dados para nova planilha acumulado
Dim myrange As Range
Set myrange = Range("A5:O150")
myrange(1, 1).Select
If myrange(1, 1) <> "" Then
'Copiamos
Range(Selection.End(xlDown), Selection.Offset(0, 14)).Copy
'Selecionamos a Aba
Sheets("Embarques acumulado mês").Select
'Verificamos se A5 está vazia
If Range("a5") = "" Then
Range("A5").PasteSpecial
se
Exit Sub
Else 'Se A5 não estiver Vazia
Range("a5").End(xlDown).Offset(1, 0).PasteSpecial
End If
End If
Application.CutCopyMode = False
End Sub
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 11/04/2014 5:19 pm