COPIAR E COLAR A LINHA INTEIRA COM FOR EACH - BVA
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:
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
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
Obrigado..mas não deu certo..dessa forma ele não está copiando a linha inteira
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
se eu trocar pelo 3, apresenta o erro abaixo:
erro em tempo de execução [ô]9[ô]:
subscrito fora do intervalo
erro em tempo de execução [ô]9[ô]:
subscrito fora do intervalo
Tire um printscreen de Plan1 e Plan2 e nos envie, pra que possamos ter uma noção melhor de como elas estão formatadas.
segue
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...
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
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%
O código que você precisa é esse aqui
se o problema foi resolvido por favor encerre o tópico!
Espero ter ajudado!
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!
Problema resolvido!!!
Obrigado a todos!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Obrigado a todos!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Tópico encerrado , respostas não são mais permitidas