redrummurder Postado Setembro 21, 2012 Denunciar Share Postado Setembro 21, 2012 estou aprendendo VBA e não consigo dar duas restriçoes para um determinado resultado de minha conta. quero q minha planilha marque certo resultado se minha divisao de (h/c)<= (1/2) e tambem se (a/c) estiver entre 1 e (3/2). ex: usei a=60; c=18; h=7... com esses dados meu Bb seria -0.4, mas minha planilha marca -0.5Function Bb(a, c, h)If (h / c <= (1 / 2)) And (1 <= a / c <= (3 / 2)) ThenBb = -0.5ElseIf (h / c <= (1 / 2)) And (2 <= a / c <= 4) ThenBb = -0.4ElseIf (1 / 2) < (h / c) <= (3 / 2) And 1 <= (a / c) <= (3 / 2) ThenBb = -0.5ElseIf (1 / 2) < (h / c) <= (3 / 2) And 2 <= (a / c) <= 4 ThenBb = -0.4ElseIf (3 / 2) < (h / c) <= 6 And 1 <= (a / c) <= (3 / 2) ThenBb = -0.6ElseIf (3 / 2) < (h / c) <= 6 And 2 <= (a / c) <= 4 ThenBb = -0.5End IfEnd Function Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 BrunoCivil Postado Outubro 31, 2012 Denunciar Share Postado Outubro 31, 2012 O VBA não entende inequações simultâneas, como as que você colocou: 1 <= a / c <= (3 / 2)voce deve escrever nesse caso:If (h / c <= (1 / 2)) And ( a / c >=1 Or a/c <= (3 / 2)) Then... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marleyson Postado Novembro 7, 2012 Denunciar Share Postado Novembro 7, 2012 (editado) O VBA não entende inequações simultâneas, como as que você colocou: 1 <= a / c <= (3 / 2)voce deve escrever nesse caso:If (h / c <= (1 / 2)) And ( a / c >=1 Or a/c <= (3 / 2)) Then...O bruno respondeu muito bem a questão, o VBA não reconhece inequações simultâneas, só vou corrigir a formação da condicional, pois o autor queria uma condição que mostrasse um resultado "entre", e quando queremos um resultado que esteja entre duas variáveis utilizamos o SE ... AND .... AND.Na tabela verdade: ^ = and+ = orV ^ V = VV + F = Vlogo se utilizar o "OR" para determinar o LS e o LI de um Range, pode ser que tanto a variável LS quanto a variável LI autorize a entrada no bloco condicional.Portanto ficaria assim: If (h / c <= (1 / 2)) And ( a / c >=1 And a/c <= (3 / 2)) Then[...] Código se Verdadeiro [...]End Ifespero ter somado.ATT Editado Novembro 7, 2012 por Marleyson Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 AislanRosa Postado Novembro 20, 2012 Denunciar Share Postado Novembro 20, 2012 aqui testei e funcionou...o código ativou a restrição...Conseguiu red? Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
redrummurder
estou aprendendo VBA e não consigo dar duas restriçoes para um determinado resultado de minha conta.
quero q minha planilha marque certo resultado se minha divisao de (h/c)<= (1/2) e tambem se (a/c) estiver entre 1 e (3/2).
ex: usei a=60; c=18; h=7... com esses dados meu Bb seria -0.4, mas minha planilha marca -0.5
Function Bb(a, c, h)
If (h / c <= (1 / 2)) And (1 <= a / c <= (3 / 2)) Then
Bb = -0.5
ElseIf (h / c <= (1 / 2)) And (2 <= a / c <= 4) Then
Bb = -0.4
ElseIf (1 / 2) < (h / c) <= (3 / 2) And 1 <= (a / c) <= (3 / 2) Then
Bb = -0.5
ElseIf (1 / 2) < (h / c) <= (3 / 2) And 2 <= (a / c) <= 4 Then
Bb = -0.4
ElseIf (3 / 2) < (h / c) <= 6 And 1 <= (a / c) <= (3 / 2) Then
Bb = -0.6
ElseIf (3 / 2) < (h / c) <= 6 And 2 <= (a / c) <= 4 Then
Bb = -0.5
End If
End Function
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.