Ir ao conteúdo
  • Cadastre-se

Dúvida Programação vb


Posts recomendados

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

Link para o comentário
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

 

Link para o comentário
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.

Link para o comentário
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;)

 

 

 

Link para o comentário
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.

Link para o comentário
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

Link para o comentário
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

 

Link para o comentário
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

 

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!