Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  

Recommended Posts

Postado (editado)

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

Editado por DiF
Botão CODE <>

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

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

Editado por Andersom Melari

Compartilhar este post


Link para o post
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)?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Noite Edson, me desculpe a demora na resposta, só pude responder agora.

Sim, estou trabalhando com o seu código na planilha original, devo ter feito confusão quando te enviei, desculpe!

 

respondendo a sua pergunta, é para deletar os dados de todas as colunas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×