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:  
Marcel Campos

Dúvida Programação vb

Recommended Posts

Bom dia galera,

 

Estou com dificuldades para concluir o VB de uma planilha. No caso minha planilha copia itens de uma aba para a outra de um intervalo especificado, para criar um banco de dados e em seguida apaga as informações para que seja inseridas as novas. Porém eu preciso que ela copie apenas as linhas que contenham informações, pois do contrário o banco ficará com linhas em branco.

 

Segue a programação atual da planilha

 

Private Sub btn_salvar()
    Sheets("Setup").Select
    Range("A3:J7").Copy
    Sheets("BD_Setup").Select
    Range("A3").Select
    Selection.Insert Shift:=xlDown
    Selection.PasteSpecial Paste:=xlPasteValues '<= ou ActiveSheet.Paste para colar com Fórmulas caso tenha
    Application.CutCopyMode = False
    Sheets("Setup").Select
End Sub

 

Desde já obrigado

 

Marcel Campos

Editado por Marcel Campos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Marcel.

Experimente:


 

Private Sub btn_salvar()
 Dim LRo As Long, LRd As Long
  LRo = Sheets("Setup").Cells(Rows.Count, 1).End(xlUp).Row
  LRd = Sheets("BD_Setup").Cells(Rows.Count, 1).End(xlUp).Row
  If LRd < 3 Then LRd = 3
  Sheets("BD_Setup").Cells(LRd + 1, 1).Resize(LRo - 2, 10).Value = _
   Sheets("Setup").Range("A3:J" & LRo).Value
  Sheets("Setup").Range("A3:J" & LRo).Value = ""
End Sub

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom Osvaldo.

 

Só tem um detalhe que eu gostaria que você me ajudasse do qual por falha minha acabei nem comentando, em algumas das células que eu insiro as informações ela tem uma formula e quando salvo a célula é apagada junto com as informações. 

Como posso corrigir ?

 

Desde já obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E so separar a coluna do range que deverá ser apagado

 

Exemplo suas fórmulas estão na coluna G então faça algo assim

 

Range ("a3:f").clearcontents

Range ("g3:j").clearcontents

 

Ajuste conforme necessário.

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Marcel Campos disse:

 

... em algumas das células que eu insiro as informações ela tem uma formula ...

Eu entendi que você insere informações em células nas quais há fórmulas. É isso que você quis dizer? :confused::(

 

... e quando salvo a célula é apagada (célula com fórmula?) junto com as informações. 

Você precisa informar quais intervalos deseja apagar e quais deseja manter (provavelmente deseja manter os intervalos com fórmulas). :P;)

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, é isso mesmo Osvaldo.

 

E como informo quais são os intervalos que desejam manter ?

 

Tentei fazer pela opção citada pelo "Casadohardware", mas não consegui.

Compartilhar este post


Link para o post
Compartilhar em outros sites
59 minutos atrás, Marcel Campos disse:

E como informo quais são os intervalos que desejam manter ?

 

 

 

Informe aqui quais os intervalos que deseja limpar e quais os que deseja manter. Em seguida eu farei os ajustes no código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Osvaldo as colunas que não precisam ser apagadas são as colunas G e J

Editado por Marcel Campos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcel, substitua esta linha

Sheets("Setup").Range("A3:J" & LRo).Value = ""

 

por estas duas

 Sheets("Setup").Range("A3:F" & LRo).Value = ""
 Sheets("Setup").Range("H3:I" & LRo).Value = ""

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como as respostas do Osvaldomp foram uteis, faltou você clicar em Curtir, das respostas dele..

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde,

 

Osvaldo tentei inserir a linguagem de VB que você me passou para uma planilha para controle de produção, tentei adequar as condições e variáveis para as novas células mas não obtive sucesso, você pode me ajudar ?

 

Os campos de dados de produção devem ser inseridos na planilha BD_Prod nas células especificas e os campos dados paradas devem ser inseridos no BD_Paradas, que é bem similar ao vb que você escreveu para mim anteriormente porém não conseguir utilizá-lo por falta de conhecimento do linguagem VB. Desta vez anexei a planilha caso possa me ajudar.

 

Desde já obrigado.

APONTAMENTO PRODUÇÃO.xlsm

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Marcel Campos disse:

... tentei adequar ... mas não obtive sucesso...

      ;)    :P

 

 

 

Olá, Marcel.

Experimente este código.

Os dados serão replicados na planilha "BD_Prod" se "B8" estiver preenchida e serão replicados na planilha "BD_Paradas" se "A16" estiver preenchida.

Restou a dúvida de quais células você quer limpar após replicar os dados. Tente adaptar os comandos que sugeri antes, se não conseguir retorne para informar quais as células.

Private Sub Botão1_Clique()
 Dim LRo As Long, LRd As Long, rA()
  If [B5] <> "" Then
   rA = Array([B5], [E5], [H5], [B7], [E7], [B9], [H9], [B11], [E11], [H11])
   LRd = Sheets("BD_Prod").Cells(Rows.Count, 1).End(xlUp).Row
   Sheets("BD_Prod").Cells(LRd + 1, 1).Resize(, 10).Value = rA
  End If
  If [A16] <> "" Then
   LRo = Sheets("Apontamento").Cells(Rows.Count, 1).End(xlUp).Row
   LRd = Sheets("BD_Paradas").Cells(Rows.Count, 1).End(xlUp).Row
   Sheets("BD_Paradas").Cells(LRd + 1, 1).Resize(LRo - 15, 11).Value = _
   Sheets("Apontamento").Range("A16:K" & LRo).Value
  End If
End Sub


obs. sugestão - desfaça a mesclagem das células "B9:E9" pois células mescladas podem provocar erro em macros e em fórmulas. Para obter efeito visual equivalente após desfazer a mesclagem, selecione aquele intervalo clique com o direito Formatar células / Alinhamento / Horizontal / Centralizar seleção / Ok

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@osvaldomp as células que precisam ser limpas são(B5], [E5], [H5], [B7], [E7], [B9], [E11], [H11]). E todas as colunas a partir da linha 16 ( [D], [E], [G], [H], [J], [K] ).

valeu.....

 

A locação dos valores funcionou.

Compartilhar este post


Link para o post
Compartilhar em outros sites
32 minutos atrás, Marcel Campos disse:

@osvaldomp as células que precisam ser limpas são(B5], [E5], [H5], [B7], [E7], [B9], [E11], [H11]). E todas as colunas a partir da linha 16 ( [D], [E], [G], [H], [J], [K] ).

 

 

 

Olá, Marcel.

Acrescente as duas primeiras linhas abaixo.

Union([B5], [E5], [H5], [B7], [E7], [B9], [E11], [H11]) = ""
Union(Range("D16:E" & LRo), Range("G16:H" & LRo), Range("J16:K" & LRo)) = ""
End Sub

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde@osvaldomp,

 

Obrigado pela ajuda, foi de muita valia.

 

Você sabe se há alguma função (que não esteja em vb) para que eu faça uma busca em uma matriz, e o resultado seja retornado de outra coluna, porém relacionada a maior celcula. EXemplo:

 

     A                             B

 

   12                            Azul

   23                            Amarelo

   24                            Verde

   17                            laranja

   48                            Branco

 

 

resultado maior = Branco

 

Fui claro ?

 

Obrigado.

Editado por Marcel Campos

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

×