Notifications
Clear all

Loop Copy-Cola

11 Posts
4 Usuários
0 Reactions
1,951 Visualizações
(@bguerra)
Posts: 50
Trusted Member
Topic starter
 

Olá mestres!

Pessoal, mais uma vez solicito a ajuda de vocês, estou com o seguinte "desafio":

Tenho em uma planilha um intervalo de células (Ex.: Plan1, intervalo toda a linha 17 até toda a Linha 42) gostaria de realizar, por macro, a cópia desse intervalo e colar na linha 44 da mesma planilha.

O problema é que o número de repetições desse Copy-Cola vai depender de um loop associado a um valor inserido, na Célula A1 por exemplo.

Ou seja se o valor de A1=5 o número de repetições deverá ser de 5, ou seja copiar e colar esse intervalo, um abaixo do outro, 5 vezes e assim por diante com um limite de 50 vezes.

Espero ter sido claro, não encontrei o botão para anexar a planilha como exemplo, mas qualquer coisa é só me perguntar.

Muito Obrigado a todos!

 
Postado : 19/02/2014 1:19 pm
(@weslley)
Posts: 90
Trusted Member
 

Meu caro, verifica se este exemplo atende a sua expectativa.

Qualquer dúvida inspecione o código fonte, está bem explicativo.

 
Postado : 19/02/2014 1:40 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Weslley,

Vc só esqueceu essa parte:

Ou seja se o valor de A1=5 o número de repetições deverá ser de 5, ou seja copiar e colar esse intervalo, um abaixo do outro, 5 vezes e assim por diante com um limite de 50 vezes.

Incluí mais uma linha no código para resolver essa:

Sub LoopCopyPaste()

Dim Limite, Plinha, c 'Declaração da variaveis

Set intervalo = Rows("17:42") 'Cria o intervalo de linhas a ser copiado

Limite = [A1].Value 'Atribui a variavel Limite o valor da célula A1

If Limite > 50 Then Limite = 50 ' incluida -> se o limite na célula A1 for maior que 50, vai fazer "apenas" 50 loops

c = 1 'Defica a variavel c = 1

'Percorre um loop de 1 até o Limite definido pelo usuário
Do While c <= Limite
    
    Plinha = Cells(Rows.Count, "A").End(xlUp).Row + 2 'Verifica a ultima linha em branco e incrementa +2 linhas
    intervalo.Copy Rows(Plinha) 'Copia o intervalo e cola
    c = c + 1 'Incrementa a variavel c
    
Loop

MsgBox "Loop finalizado"

End Sub
 
Postado : 19/02/2014 2:18 pm
(@bguerra)
Posts: 50
Trusted Member
Topic starter
 

Gilmar / Weslley,

Obrigado!

Mas agora estou esbarrando no seguinte:

A macro vai começar a rodar na planilha "Início", porém a área selecionada está na planilha "Base MAC internacional", logo a linha "Limite = [A1].Value 'Atribui a variavel Limite o valor da célula A1" não seleciona o intervalo correto na planilha correta... não mencionei esse detalhe... Obrigado!!

 
Postado : 20/02/2014 10:59 am
(@bguerra)
Posts: 50
Trusted Member
Topic starter
 

Gilmar / Weslley,

Obrigado!

Mas agora estou esbarrando no seguinte:

A macro vai começar a rodar na planilha "Início", porém a área selecionada está na planilha "Base MAC internacional", logo a linha "Limite = [A1].Value 'Atribui a variavel Limite o valor da célula A1" não seleciona o intervalo correto na planilha correta... não mencionei esse detalhe... Obrigado!!

Pessoal,

Também não está colando no lugar correto...estou mando anexo a planilha. Obrigado!

Na planilha em anexo quero copiar da linha 9 até a 39 e colar 2 linhas abaixo e assim por diante. Tks!

 
Postado : 20/02/2014 12:06 pm
(@weslley)
Posts: 90
Trusted Member
 

Meu caro, verifica se este exemplo atende sua expectativa.

 
Postado : 20/02/2014 12:44 pm
(@bguerra)
Posts: 50
Trusted Member
Topic starter
 

Meu caro, verifica se este exemplo atende sua expectativa.

Wesley,

Está ótimo! mas não teria como de ao inves de abrir uma msg box solicitando a quantidade de repetições a macro buscar esse valor (o número de repetições) da Célula C6 da planilha "Ínicio"?

Muito Obrigado!

 
Postado : 20/02/2014 2:00 pm
(@weslley)
Posts: 90
Trusted Member
 

Meu caro, verifica se funciona.

 
Postado : 21/02/2014 6:32 am
(@bguerra)
Posts: 50
Trusted Member
Topic starter
 

Kra que ideia ótima! Vlw!

Limite = Range("Limite").Value

 
Postado : 21/02/2014 6:51 am
(@weslley)
Posts: 90
Trusted Member
 

Valeu!

 
Postado : 21/02/2014 7:01 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Caso seja necessário reabrir o tópico, o autor poderá enviar uma MP para um dos moderadores solicitando o desbloqueio.

 
Postado : 21/02/2014 7:58 am