Notifications
Clear all

[Resolvido] Select Case com numeros em porcentagem


Plague14
(@plague14)
New Member Registered
Entrou: 2 anos atrás
Posts: 3
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

ResponderCitar (Quote)
Tags do Tópico
VBA
Plague14
(@plague14)
New Member Registered
Entrou: 2 anos atrás
Posts: 3
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%


ResponderCitar (Quote)
EdsonBR
(@edsonbr)
Prominent Member Moderator
Entrou: 5 anos atrás
Posts: 762
 

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%").


ResponderCitar (Quote)
Anderson
(@anderson)
Estimable Member Registered
Entrou: 12 meses atrás
Posts: 172
 

 

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


ResponderCitar (Quote)
Plague14
(@plague14)
New Member Registered
Entrou: 2 anos atrás
Posts: 3
Topic starter  

obrigado, já consegui o/


Eron curtiu
ResponderCitar (Quote)