Ir ao conteúdo

Posts recomendados

Postado

 

Olá, boa tarde!


Estou fazendo uma planilha de estoque e preciso fazer a seguinte macro, dando como exemplo a primeira linha:

Quando clicar no símbolo "+" será adicionado o valor da célula B5 ao valor da célula I5 e posteriormente será apagado o valor de B5. Quando clicar no símbolo "-" a mesma lógica, mas subtraindo o valor. A memsa lógica para todas as linhas.
No exemplo da primeira linha, se clicar em "+" o estoque vai ficar 16 e se clicar em "-" vai ficar 4.

 

IMG-20220608-WA0001.jpg.0bb41aa016c8861d55c58b5130031fa2.jpg

 

Eu fiz a macro mas ficou muito grande, porque era uma macro pra cada linha, e se usasse o filtro pra mudar a ordem das linhas, se perdiam as referências do valor a ser somado ou subtraído e usava o valor errado.

Se alguém puder me ajudar fico muito grato.
Agradeço desde já.

 

ESTQ.xlsx

Postado

Boas @lucas.sns ,
 

Experimente da seguinte forma:
Crie um novo módulo e cole estas macros lá:
 

Sub somar()
    Dim s As Shape, linha As Long, sname As String
    Dim valor, stock_anterior, stock_atual As Long
    
    sname = Application.Caller
    Set s = ActiveSheet.Shapes(sname)
    linha = s.TopLeftCell.Row
    
    valor = Range("B" & linha).Value
    
    stock_anterior = Range("I" & linha).Value
    
    stock_atual = stock_anterior + valor
    
    Range("B" & linha).Value = 0
    Range("I" & linha).Value = stock_atual

End Sub

 

Sub subtrair()

    Dim s As Shape, linha As Long, sname As String
    Dim valor, stock_anterior, stock_atual As Long
    
    sname = Application.Caller
    Set s = ActiveSheet.Shapes(sname)
    linha = s.TopLeftCell.Row
    
    valor = Range("B" & linha).Value
    
    stock_anterior = Range("I" & linha).Value
    
    stock_atual = stock_anterior - valor
    
    Range("B" & linha).Value = 0
    Range("I" & linha).Value = stock_atual

End Sub

 

Depois para cada botão de somar atribua a macro "Somar" e para cada botão de subtrair a macro "subtrair".

Ele vai verificar qual a linha em que está o botão que chamou a macro, e vai proceder a alteração do stock.

Espero ter ajudado. 🙂

  • Curtir 1
Postado

1. na coluna A existem 5 shapes (sinal de menos) sobrepostos a partir de A11. Faça a limpeza.

2. coloque os dois códigos abaixo em um módulo

3. execute o primeiro código uma única vez para vincular cada shape (sinais de menos e de mais) ao segundo código

 

Pronto para funcionar.

 

Sub AtribuiMacroMaisMenos()
 Dim sinal As Shape
  For Each sinal In ActiveSheet.Shapes
   If sinal.Name Like "M*" Then sinal.OnAction = "AdicionaSubtrai"
  Next sinal
End Sub

 

Sub AdicionaSubtrai()
 Dim v As Long
  v = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
  Cells(v, 2).Copy
  Cells(v, 9).PasteSpecial , 2 + (ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column = 1) * -1
  Cells(v, 2) = ""
End Sub

 

  • Curtir 1
Postado

Mais uma:

 

Tendo atribuído todos os botões à mesma macro "AtualizaEstoque":

 

Sub AtualizaEstoque()
  Dim oper As String: oper = Application.Caller
  Dim rg As Range: Set rg = ActiveSheet.Shapes(oper).TopLeftCell.EntireRow
  rg.Columns("I") = rg.Columns("I") + rg.Columns("B") * ((oper Like "Menos*") - (oper Like "Mais*"))
  rg.Columns("B").ClearContents 'Apaga o valor após a operação algébrica
End Sub

 

 

 

  • Curtir 1

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!