COPIAR E COLAR A LINHA INTEIRA COM FOR EACH - BVA

F4B1NH0 03/08/2015 21:40:16
#449512
Boa noite pessoal,

Alguém consegue me ajudar a entender onde estou errando em meu código?

Preciso copiar a linha inteira da Plan1 se a celula não for vazia, colar na Plan2 só que a partir da 3ª coluna.

EX: Plan1, células (A1:H1) copiar e colar na Plan2(C1:J1)
consegui fazer funcionar somente colando na primeira coluna, mas preciso que seja na terceira.

Segue o código que tenho até o momento:

  Sub copiar2()

Dim i As Integer
i = 1
For Each celula In Sheets([Ô]Plan1[Ô]).Range([Ô]A1:A10[Ô])
If celula <> [Ô][Ô] Then
celula.EntireRow.Copy

Sheets([Ô]Plan2[Ô]).Cells(i, 1).PasteSpecial

i = i + 1
End If
Next

End Sub
KERPLUNK 03/08/2015 22:45:07
#449515
Você não pode pensar como uma pessoa faria, você tem que entender que você está usando código e não imitando um comportamento humano.

Dim i As Integer
i = 3

For Each celula In Sheets([Ô]Plan1[Ô]).Range([Ô]A1:A10[Ô])
If celula <> [Ô][Ô] Then
Sheets([Ô]Plan2[Ô]).Cells(i,1).Value = celula
i = i + 1
End If
Next
F4B1NH0 04/08/2015 09:43:49
#449526
Obrigado..mas não deu certo..dessa forma ele não está copiando a linha inteira
JABA 04/08/2015 12:01:05
#449535
Não sei se entendi bem, mas troque o indice para 3, como está abaixo e veja se funciona:

Dim i As Integer
i = 1
For Each celula In Sheets([Ô]Plan1[Ô]).Range([Ô]A1:A10[Ô])
If celula <> [Ô][Ô] Then
celula.EntireRow.Copy

Sheets([Ô]Plan2[Ô]).Cells(i, [txt-color=#e80000]3[/txt-color]).PasteSpecial

i = i + 1
End If
Next
F4B1NH0 04/08/2015 12:14:07
#449536
se eu trocar pelo 3, apresenta o erro abaixo:

erro em tempo de execução [ô]9[ô]:
subscrito fora do intervalo
JABA 04/08/2015 12:29:59
#449537
Tire um printscreen de Plan1 e Plan2 e nos envie, pra que possamos ter uma noção melhor de como elas estão formatadas.
F4B1NH0 04/08/2015 13:08:00
#449538
segue
F4B1NH0 05/08/2015 13:06:41
#449603
O que estava ocorrendo é o seguinte:
estava copiando a linha inteira e tentando colar na 3ª coluna, se vc fizer isso manualmente no excel também vai apresentar o erro
pois vc está tentando colar algo maior que a quantidade de células

Então a [Ô]solução[Ô] foi não copiar a linha inteira, mas sim até onde está o último registro daquela linha, usando o famoso [Ô].end(xltoRight)[Ô]
Porém o código da erro justamente em alguma célula cujo só tem valor na primeira célula, porque se só tem valor na primeira célula ele acaba copiando a linha inteira
se informar [Ô].end(xltoRight)[Ô]

então vou me contentar copiando tudo desde a primeira coluna mesmo...

 Dim i As Integer
i = 1


For Each celula In Sheets([Ô]Plan2[Ô]).Range([Ô]A1:A20[Ô])

If celula <> [Ô][Ô] Then

celula.Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy

Sheets([Ô]Plan3[Ô]).Cells(i, 1).PasteSpecial

i = i + 1
Sheets([Ô]Plan2[Ô]).Select

End If
Next

KERPLUNK 05/08/2015 18:29:05
#449647
Copiando conteúdo de A1:J1 de Plan1 para C1:L1 de Plan2:

For i% = 1 To 10 [ô]mude 10 para o número de colunas desejado
Sheets(2).Cells(1, i% + 2).Value = Sheets(1).Cells(1, i%).Value
Next i%


FILMAN 05/08/2015 21:40:09
#449654
Resposta escolhida
O código que você precisa é esse aqui

Sub CopiaCelulas()
Dim i As Integer
i = 1
For Each celula In Sheets([Ô]Plan1[Ô]).Range([Ô]A1:A10[Ô])
If celula <> [Ô][Ô] Then
Sheets([Ô]Plan1[Ô]).Range([Ô]A[Ô] & i, [Ô]H[Ô] & i).Copy [ô]Seleciona somente as celulas da linha de momento e copia
Sheets([Ô]Plan2[Ô]).Range([Ô]C[Ô] & i).PasteSpecial xlPasteValues [ô]Cola os dados anterior na planilha que queres!
Application.CutCopyMode = False [ô]Desmarca os pontilhamentos de copia
End If
i = i + 1
Next
End Sub


se o problema foi resolvido por favor encerre o tópico!
Espero ter ajudado!
F4B1NH0 07/08/2015 15:56:40
#449711
Problema resolvido!!!

Obrigado a todos!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Tópico encerrado , respostas não são mais permitidas