Ir ao conteúdo

Excel Como criar um macro que fosse capaz de selecionar células não vazias e copiá-la?


Ir à solução Resolvido por CasaDoHardware,

Posts recomendados

Postado

Olá!

Estou com uma dificuldade, tenho uma planilha, onde nessa, eu gostaria de fazer um macro que fosse capaz de copiar células não vazias e cola-las (com seus valores e formatação original) dentro de outra planilha no mesmo arquivo, e para que não houvesse a substituição dos arquivos já existentes nessa outra planilha, gostaria que esse macro fosse capaz de fazer a colagem sempre 2 linhas após a ultima linha com valores preenchidos.

 

Por exemplo, no meu arquivo de teste, no link em anexo, eu tenho a planilha "APR-HO" onde eu gostaria de selecionar as células não vazias nesta, e colá-las na planilha "PPRA", mantendo sempre apenas os valores e a formatação original da planilha de onde foram copiadas.

 

Anexo: https://drive.google.com/file/d/1RrNxxYcppPcTUfLVIoVPQAI18S4drVgH/view?usp=sharing

Postado

Eu não consegui salvar o arquivo e não sei o motivo disso, sendo assim não sei como é a planilha, se você fizer um exemplo menor fique mais fácil ajudar.


Não consegui subir o arquivo que fiz, mas tenta ajustar este codigo.

 

Sub Copiar()

Dim W As Worksheet
Dim WS As Worksheet
Dim lRow As Long

Set W = Sheets("APR-HO")
Set WS = Sheets("PPRA")

'Pula duas linhas a partir da ultima com dados.
    lRow = WS.Range("A" & Rows.Count).End(xlUp).Offset(2, 0).Row
    
    'Copia e cola os dados incluindo a formatação.
    W.Range("A4:L19").Copy Destination:=WS.Range("A" & lRow)
    

End Sub

 

  • Curtir 1
Postado
23 minutos atrás, CasaDoHardware disse:

Eu não consegui salvar o arquivo e não sei o motivo disso, sendo assim não sei como é a planilha, se você fizer um exemplo menor fique mais fácil ajudar.


Não consegui subir o arquivo que fiz, mas tenta ajustar este codigo.

 

Sub Copiar()

Dim W As Worksheet
Dim WS As Worksheet
Dim lRow As Long

Set W = Sheets("APR-HO")
Set WS = Sheets("PPRA")

'Pula duas linhas a partir da ultima com dados.
    lRow = WS.Range("A" & Rows.Count).End(xlUp).Offset(2, 0).Row
    
    'Copia e cola os dados incluindo a formatação.
    W.Range("A4:L19").Copy Destination:=WS.Range("A" & lRow)
    

End Sub

 

Esse exemplo aqui é menor, aí no caso a "Planilha 1" e "Planilha 2" substituem as "APR-HO" e "PPRA" respectivamente.

Mas eu fiz um teste em uma linha bem simples aqui e deu certo, acredito que isso ira suprir a minha necessidade, só tenho que fazer algumas alterações, no caso só não entendi muito bem a parte de selecionar as células não vazias.

Obrigado amigo, me ajudou muito!!! :)

Pasta1.xlsx

  • Solução
Postado

Experimente este ajuste.

 

Sub Copiar()

Dim W As Worksheet
Dim WS As Worksheet
Dim lRow As Long

Set W = Sheets("APR-HO")
Set WS = Sheets("PPRA")

'Pula duas linhas a partir da ultima com dados.
    lRow = WS.Range("B" & Rows.Count).End(xlUp).Offset(2, 0).Row
    
    'Copia e cola os dados incluindo a formatação.
    W.Range("B2:S23").Copy Destination:=WS.Range("B" & lRow)
    

End Sub
 

Postado
17 horas atrás, CasaDoHardware disse:

Experimente este ajuste.

 

Sub Copiar()

Dim W As Worksheet
Dim WS As Worksheet
Dim lRow As Long

Set W = Sheets("APR-HO")
Set WS = Sheets("PPRA")

'Pula duas linhas a partir da ultima com dados.
    lRow = WS.Range("B" & Rows.Count).End(xlUp).Offset(2, 0).Row
    
    'Copia e cola os dados incluindo a formatação.
    W.Range("B2:S23").Copy Destination:=WS.Range("B" & lRow)
    

End Sub
 

Obrigado amigo, na hora de colar os dados estava dando errado, mas eu fiz umas alterações no alterações na minha planilha e no seu macro e consegui exatamente o que eu queria.

A parte de seleção, e das duas linhas que são puladas, é exatamente o que eu buscava.

Muito obrigado amigo!!!

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...