Notifications
Clear all

[Resolvido] Select Case com numeros em porcentagem

5 Posts
3 Usuários
1 Reactions
1,101 Visualizações
(@plague14)
Posts: 3
New Member
Topic starter
 

Boa tarde meus amigos, estou querendo fazer um select case pra caso a variação da minha celula for entre os determinados, ela reescrever umas celulas vizinhas e aparecer um msgbox, poderiam me auxiliar no que estou fazendo de errado?

 


variacao = ActiveCell.Value


'Ranking de decisões
Select Case variacao
Case Is <= -5, 0
ActiveCell.Offset(0, 1).Value = Range("P10").Value * Range("AA6").Value
ActiveCell.Offset(0, 2).Value = Range("P3").Value * Range("AA6").Value
Range("P10").Value = Range("N10").Value - ActiveCell.Offset(0, 1).Value
Range("P3").Value = Range("N3").Value + ActiveCell.Offset(0, 2).Value
'verificação
ActiveCell.Offset(0, 3).Select
ActiveCell.Value = "OK"

MsgBox ("Passou pelo 5")

Case -4, 99 To -4, 0
ActiveCell.Offset(0, 1).Value = Range("P10").Value * Range("AA7").Value
ActiveCell.Offset(0, 2).Value = Range("P3").Value * Range("AA7").Value
Range("P10").Value = Range("N10").Value - ActiveCell.Offset(0, 1).Value
Range("P3").Value = Range("N3").Value + ActiveCell.Offset(0, 2).Value

'verificação
ActiveCell.Offset(0, 3).Select
ActiveCell.Value = "OK"
MsgBox ("Passou pelo 4")
Case -3, 99 To -3, 0
ActiveCell.Offset(0, 1).Value = Range("P10").Value * Range("AA8").Value
ActiveCell.Offset(0, 2).Value = Range("P3").Value * Range("AA8").Value
Range("P10").Value = Range("N10").Value - ActiveCell.Offset(0, 1).Value
Range("P3").Value = Range("N3").Value + ActiveCell.Offset(0, 2).Value

'verificação
ActiveCell.Offset(0, 3).Select
ActiveCell.Value = "OK"
MsgBox ("Passou pelo 3")
Case -2, 99 To -2, 0
ActiveCell.Offset(0, 1).Value = Range("P10").Value * Range("AA9").Value
ActiveCell.Offset(0, 2).Value = Range("P3").Value * Range("AA9").Value
Range("P10").Value = Range("N10").Value - ActiveCell.Offset(0, 1).Value
Range("P3").Value = Range("N3").Value + ActiveCell.Offset(0, 2).Value

'verificação
ActiveCell.Offset(0, 3).Select
ActiveCell.Value = "OK"
MsgBox ("Passou pelo 2")
Case -1, 99 To -1, 0
ActiveCell.Offset(0, 1).Value = Range("P10").Value * Range("AA10").Value
ActiveCell.Offset(0, 2).Value = Range("P3").Value * Range("AA10").Value
Range("P10").Value = Range("N10").Value - ActiveCell.Offset(0, 1).Value
Range("P3").Value = Range("N3").Value + ActiveCell.Offset(0, 2).Value

'verificação
ActiveCell.Offset(0, 3).Select
ActiveCell.Value = "OK"
MsgBox ("Passou pelo 1")
Case Else

End Select
 
Postado : 21/12/2020 5:28 pm
Tags do Tópico
(@plague14)
Posts: 3
New Member
Topic starter
 

@anderson obrigado pela contribuição!

No caso eu tava precisando de condicionais para < -5,00% , < -4,00% , < -3,00% , < -2,00% , < -1,00%

 
Postado : 21/12/2020 10:08 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Bem vindo de volta, @plague14

  • No VBA, se vc quiser entrar com números decimais direto dentro do código, tem que usar o separador decimal americano, ou seja, o ponto, não a vírgula.
  • Números percentuais, ou vc entra com eles em decimal, logicamente dividido por 100, ou pode também usar a função Evaluate.
    Assim, 15,5% por exemplo deve ser entrado ou como 0.155 ou como Evaluate("15.5%"). -1,00% seria introduzido ou na forma -0.01 ou Evaluate("-1.00%") ou simplesmente Evaluate("-1%").

 
Postado : 22/12/2020 12:00 am
(@anderson)
Posts: 203
Reputable Member
 

 

if variacao < -5/100 And variacao >= -4/100 then

end if

if variacao < -4/100 And variacao >= -3/100 then

end if

if variacao < -3/100 And variacao >= -2/100 then

end if

if variacao < -2/100 And variacao >= -1/100 then

end if

if variacao > -1/100 And variacao <= 0 then

end if

OU

Case  >= -4/100 To -3/100 

Case >= -3/100 To -2/100

Case >= -2/100 To -1/100

Case >= -2/100 To -1/100

Case >= -1/100 To 0

Case Else

OU

Case  >= -4/100 To -3.01/100 

Case >= -3/100 To -2.01/100

Case >= -2/100 To -1.01/100

Case >= -1/100 To -0.99/100

Case Else
Este post foi modificado 4 anos atrás 7 vezes por Anderson

Em 90% dos casos em que não se anexa o arquivo, ocorrem mal-entendidos, gerando perda de tempo de ambos os lados.

 
Postado : 22/12/2020 7:21 am
(@plague14)
Posts: 3
New Member
Topic starter
 

obrigado, já consegui o/

 
Postado : 22/12/2020 4:28 pm
Eron reacted