Página 1 de 1

LOOP COPIA E COLA ALGUEM ME AJUDA URGENTE

Enviado: 24 Mar 2021 às 20:01
por fagnerpnovais
VBA
Finalidade:
Copiar as informações da BASE e trazer para a declaração de forma que siga constantemente até que seja encontrada uma celula vazia

Como iria funcionar:
Ao clicar no "botão executar"
Copia a informação da primeira Linha da guia "BASE" , ou seja de A1:D1 e cola na na guia DECLARAÇÃO a partir da celular B5
1º Iria aparecer assim: PARA PESSOAL 1 UF: AC

E seguiria um LOOP constante, ou seja, a próxima seria copia da A2:D2
2º Copia A2:D2 PARA PESSOAL 2 UF: AC
3º Copia A3:D3 PARA PESSOAL 3 UF: AC
4º ... PARA PESSOAL 4 UF: AC
5º ... PARA PESSOAL 5 UF: AC
6º ... PARA PESSOAL 6 UF: AL
7º ... PARA PESSOAL 7 UF: AL
8º ... PARA PESSOAL 8 UF: AL
9º ... PARA PESSOAL 9 UF: AL
10º ... PARA PESSOAL 10 UF: AL
11º ... PARA PESSOAL 11 UF: AL
12º ... PARA PESSOAL 12 UF: AM
13º ... PARA PESSOAL 13 UF: AM

Até encontrar a ultima celular vazia e para ....

Obs: A cada loop ele salva o arquivo (mas já tenho esse CÓD. Preciso mesmo apenas a configuração do loop

O MODELO DA PLANILHA ESTÁ NO ANEXO QUEM PUDER AJUDAR MONTANDO O CÓD E COMPARTILHAR SUPER

AGRADEÇO
VBA - CRIANDO LOOP COPIA E COLA.xlsx

Re: LOOP COPIA E COLA ALGUEM ME AJUDA URGENTE

Enviado: 25 Mar 2021 às 00:17
por babdallas
Código: Selecionar todos
Public Sub CopiarDados()
    Dim lngUltLin           As Long
    Dim arr                 As Variant
    
    With wshBD
        lngUltLin = .Cells(.Rows.Count, 1).End(xlUp).Row
        arr = .Range("A1").Resize(lngUltLin, 4).Value2
        wshDec.Range("B5").Resize(UBound(arr, 1), UBound(arr, 2)).Value2 = arr
    
        .Range("A1").Resize(lngUltLin, 4).Copy
        wshDec.Range("B5").Resize(UBound(arr, 1), UBound(arr, 2)).PasteSpecial xlPasteFormats
    End With
End Sub

Re: LOOP COPIA E COLA ALGUEM ME AJUDA URGENTE

Enviado: 25 Mar 2021 às 07:34
por luizpaps
achei bem enxuto esse código, tinha pensado em um loop, mas essa macro sua ficou bem melhor, poderia fazer o favor de explicar essa linha:
wshDec.Range("B5").Resize(UBound(arr, 1), UBound(arr, 2)).PasteSpecial xlPasteFormats
porque tem esse 1 e esse 2 depois do array

Re: LOOP COPIA E COLA ALGUEM ME AJUDA URGENTE

Enviado: 25 Mar 2021 às 11:04
por babdallas
A matriz arr possui duas dimensões, sendo a primeira dimensão representando as linhas do intervalo copiado e a segunda dimensão representando as colunas do intervalo copiado. Ou seja, o tamanho deste array representa quantas linhas e quantas colunas eu preciso para redimensionar o intervalo para colar.
Logo, ubound(arr,1) pega o número máximo de linhas. ubound(arr,2), pega o número máximo de colunas. Neste caso, 1 representa a primeira dimensão da arr e 2 representa a segunda dimensão da arr.
Ai eu utilizo isso para redimensionar a célula que vai receber os dados copiados. Desta forma, a célula é transformada em um intervalo do mesmo tamanho dos dados copiados.
Não sei se ficou claro.