Ir ao conteúdo
  • Cadastre-se

Excel VBA Gerador de Contagem


Ir à solução Resolvido por Edson Luiz Branco,

Posts recomendados

Boa tarde amigos!

 

Estou tentando desenvolver um código VBA para pegar informações de uma Sheet e colocar em outra Sheet levando em consideração o número de linhas que podem variar.

Gravei os comandos em uma Macro para copiar uma quantidade de linhas específicas, mas não consigo fazer ele usar a quantidade de linhas variável como condição para exportar pra outra Sheet, podem me ajudar.

 

Eu tenho uma planilha com a Sheet (Cadastro) que tem a base de cadastro da empresa.

image.png.69d4657eed95d23147e28c84be083bc4.png

 

tenho uma célula onde vou inserir a quantidade de itens que devem ser exportados. 

image.png.d65854f079e19abe0690fc3b75b1fed3.png

 

então preciso que seja exportado os primeiros 10 itens da lista para outra Sheet (Contagem), nesse exemplo estou pedindo 10, mas o número pode variar de 1 a (...) se atender outros requisitos, mas para o exemplo não tem importância.

 

a ideia é que uma planilha vai usar a base de cadastro para verificar alguns requisitos e determinar a quantidade de produtos que devo analisar, então ao clicar no botão image.png.d8f1ec2ce89024147bc538e2d64413fc.png o comando exporte somente as primeiras "x" linhas para uma nova Sheet.

 

Código da Macro gravada

Sub Gerador_contagem()
'
' Gerador_contagem Macro
'

'
    Sheets("Contagem").Select
    Rows("7:7").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Delete Shift:=xlUp
    Range("A7").Select
    Sheets("Cadastro").Select
    Range("A5").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Contagem").Select
    ActiveSheet.Paste
    Range("A7").Select
    Application.CutCopyMode = False
End Sub


 

 

 

 

Gerador de Contagem.xlsx

Link para o comentário
Compartilhar em outros sites

Caro amigo Edson, boa noite!

Obrigado, o seu código ficou muito bom, só faltou eu informar uma coisa.

Minha planilha original possui outras colunas com mais informações após a coluna Produto, como quantidade vendida, valor unitário, venda custo, etc etc...

ex.

image.png.ee3f7baeb97af6ea2311010bd54c20b1.png

 

no Código

Sub Gerador_Contagem_Click()
  Dim NumLinhas As Long: NumLinhas = Sheets("Cadastro").Range("C5").Value
  Dim rgCad As Range:    Set rgCad = Sheets("Cadastro").Range("A8").CurrentRegion. _
                                     Offset(1, 0).Resize(NumLinhas)
  Dim rgCtg As Range:    Set rgCtg = Sheets("Contagem").Range("A6").CurrentRegion. _
                                     Offset(1, 0)
  On Error Resume Next
    Set rgCtg = rgCtg.Resize(rgCtg.Rows.Count - 1)
  On Error GoTo 0
  rgCtg.Clear
  rgCad.Copy rgCtg.Cells(1)
  rgCtg.Parent.Activate
  Set rgCad = Nothing: Set rgCtg = Nothing
End Sub

você usou .CurrentRegion para selecionar todas as linhas próximas, correto?

quando o comando cola as informações na Sheet "Contagem" está colando todas as colunas inclusive o cabeçalho e títulos, por isso precisava que colasse somente o conteúdo da coluna A, a partir da célula A8 até a última célula da Coluna levando em consideração o número da célula C5 conforme você colocou em:

 

Dim NumLinhas As Long: NumLinhas = Sheets("Cadastro").Range("C5").Value

anexei a planilha com conteudo o mais próximo da original pra você dar uma olhada.

 

sinceramente, eu não entendo nada de VBA mas estou estudando e me esforçando para aprender, gravei uma macro para apagar essas informações excedentes e anexei ao seu código, aparentemente funcionou muito bem e está atendendo como eu preciso, porém é uma gambiarra, o código correto me ajudaria no entendimento.

Obrigado!

Gerador de Contagem.zip

Link para o comentário
Compartilhar em outros sites

7 horas atrás, Andersom Melari disse:

precisava que colasse somente o conteúdo da coluna A, a partir da célula A8

No último arquivo q você enviou, na planilha Cadastro não há nada na célula A8. Acho que você quis dizer A10 ou você está trabalhando com outra versão do arquivo em casa.

 

Pergunta: na planilha Contagem, na hora de deletar os dados anteriores, é pra deletar só os da coluna A ou também os da B (Venda Bruta) e C (%Venda)?

 

 

Link para o comentário
Compartilhar em outros sites

  • Solução

 

Ok, tente o seguinte então:

 

Sub Gerador_Contagem_Click()
  Dim NúmLinhas As Long: NúmLinhas = Sheets("Cadastro").Range("C5").Value
  Dim rgCad As Range:    Set rgCad = Sheets("Cadastro").Range("A10").Resize(NúmLinhas)
  Dim rgCtg As Range:    Set rgCtg = Sheets("Contagem").Range("A9:A" & _
                                     Sheets("Contagem").Range("A9").End(xlDown).Row)
  rgCtg.Resize(, 3).Clear
  rgCad.Copy rgCtg.Cells(1)
  rgCtg.Parent.Activate
  Set rgCad = Nothing: Set rgCtg = Nothing
End Sub

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

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...