DÊVIDA SOBRE O IF

PRANLOOSE 03/12/2015 15:23:07
#454744
Boa tarde, Pessoal.

Primeiramente, faz muito tempo que não tenho mais contato com VB6, consequentemente me torno iniciante. Mas quero fazer um programa de Personal para minha noiva e tenho uma dúvida na instrução IF, exemplo:

Se variavel for maior ou igual à 17,01 e menor ou igual à 18,49 então
resultado = X

Acontece que quando eu passo para a instrução de programação, da problema na virgula, diz que a compilação esta errada! Como tratar o erro da virgula?
Pois no campo resultado, cai certinho valor com virgula.

Vou postar abaixo o que eu fiz:

lblImc.Caption = Format(resultado, [Ô]##,##.00[Ô]) [ô] valor aparecendo correto com virgula, ex: 18,20

If resultado <= 17 Then
lblImcresult.Caption = [Ô]Muito Abaixo do Peso[Ô] [ô] até aqui funcionou

[ô]ElseIf resutlado >= 17,01 And resultado <= 18.49 Then [ô] aqui esta o problema, não passa da virgula...queria saber se há como tratar isso
lblImcresult.Caption = [Ô]Abaixo do Peso[Ô]

End If

Isso é apenas uma parte, espero que eu esteja no caminho. Espero a ajuda de vocês.

Obrigado

KERPLUNK 03/12/2015 15:29:25
#454745
Para números decimais, use o ponto, não a vírgula:

If resultado >= 17.01 Then

JABA 03/12/2015 15:33:43
#454746
Você teria que trabalhar com ponto e não com vírgula. Daí ficaria assim:

[ô]ElseIf resutlado >= [txt-color=#e80000]17.01[/txt-color] And resultado <= 18.49 Then   [ô] aqui esta o problema, não passa da virgula...queria saber se há como tratar isso
lblImcresult.Caption = [Ô]Abaixo do Peso[Ô]
PRANLOOSE 03/12/2015 15:40:18
#454747
Citação:

:
Para números decimais, use o ponto, não a vírgula:


If resultado >= 17.01 Then



Pois é, já tentei isso e não da erro, mas ele não da a mensagem [Ô]ABAIXO DO PESO[Ô] Porque, eu acredito que o resultado aparecendo com virgula e na instrução com Ponto não cruza a condição com o resultado....Por isso que estou quebrando a cabeça.

Mas, obrigado
PRANLOOSE 03/12/2015 15:45:10
#454748
Citação:

:
Você teria que trabalhar com ponto e não com vírgula. Daí ficaria assim:

[ô]ElseIf resutlado >= [txt-color=#e80000]17.01[/txt-color] And resultado <= 18.49 Then   [ô] aqui esta o problema, não passa da virgula...queria saber se há como tratar isso
lblImcresult.Caption = [Ô]Abaixo do Peso[Ô]



Pensei nisso tbm, mas como formato isso no resultado...Pois no resultado aparece com virgula, vou postar abaixo o calculo que transcrevi ao programa:

80(peso) / 1,80(altura) * 1,80
80 / 3,24
resultado = 24,69 [ô]até aqui eu consegui fazer, calcula certinho e aparece o numero com virgula

Então, como posso formatar o resultado para ponto?
KERPLUNK 03/12/2015 15:52:24
#454749
Provavelmente a sua variável [Ô]resultado[Ô] não é um valor numérico. Faça assim:

If Cdbl(resultado) >= 17.01 Then
PRANLOOSE 03/12/2015 16:40:45
#454751
Citação:

:
Provavelmente a sua variável [Ô]resultado[Ô] não é um valor numérico. Faça assim:


If Cdbl(resultado) >= 17.01 Then


Não da erro, mas tbm não mostra a mensagem [Ô]abaixo do peso[Ô]

obrigado
PRANLOOSE 03/12/2015 16:44:58
#454752
Citação:

:
:
Provavelmente a sua variável [Ô]resultado[Ô] não é um valor numérico. Faça assim:


If Cdbl(resultado) >= 17.01 Then

Não da erro, mas tbm não mostra a mensagem [Ô]abaixo do peso[Ô]

obrigado




Para ficar mais fácil o que desejo é praticamente o que postarei abaixo, é sobre a tabela IMC:

Abaixo de 17 Muito abaixo do peso
Entre 17 e 18,49 Abaixo do peso
Entre 18,5 e 24,99 Peso normal
Entre 25 e 29,99 Acima do peso
Entre 30 e 34,99 Obesidade I
Entre 35 e 39,99 Obesidade II (severa)
Acima de 40 Obesidade III (mórbida)

Então eu acredito que entra as condições IF....mas não passa a virgula
FFCOUTO 03/12/2015 17:06:15
#454753
Resposta escolhida
Assumindo que a sua variavel resultado seja do tipo numérica, basta você interver a ordem de análise das condições.
Outra coisa. como já tive vários problema por questão de arredondamento, sugiro usar o CCur para converter o resultado para currency e avaliar.

If CCur(resultado) > 40 Then
lblImcresult.Caption = [Ô]Obesidade III (mórbida)[Ô]
ElseIf CCur(resultado) > 35 Then
lblImcresult.Caption = [Ô]Obesidade II (severa)[Ô]
ElseIf CCur(resultado) > 30 Then
lblImcresult.Caption = [Ô]Obesidade I[Ô]
ElseIf CCur(resultado) > 25 Then
lblImcresult.Caption = [Ô]Acima do peso[Ô]
ElseIf CCur(resultado) >= 18.5 Then
lblImcresult.Caption = [Ô]Peso normal[Ô]
ElseIf CCur(resultado) > 17 Then
lblImcresult.Caption = [Ô]Abaixo do peso[Ô]
Else
lblImcresult.Caption = [Ô]Muito abaixo do peso[Ô]
End If
PRANLOOSE 03/12/2015 17:16:51
#454754
Citação:

:
Assumindo que a sua variavel resultado seja do tipo numérica, basta você interver a ordem de análise das condições.
Outra coisa. como já tive vários problema por questão de arredondamento, sugiro usar o CCur para converter o resultado para currency e avaliar.

If CCur(resultado) > 40 Then
lblImcresult.Caption = [Ô]Obesidade III (mórbida)[Ô]
ElseIf CCur(resultado) > 35 Then
lblImcresult.Caption = [Ô]Obesidade II (severa)[Ô]
ElseIf CCur(resultado) > 30 Then
lblImcresult.Caption = [Ô]Obesidade I[Ô]
ElseIf CCur(resultado) > 25 Then
lblImcresult.Caption = [Ô]Acima do peso[Ô]
ElseIf CCur(resultado) >= 18.5 Then
lblImcresult.Caption = [Ô]Peso normal[Ô]
ElseIf CCur(resultado) > 17 Then
lblImcresult.Caption = [Ô]Abaixo do peso[Ô]
Else
lblImcresult.Caption = [Ô]Muito abaixo do peso[Ô]
End If



Amanhã vou tentar esta lógica e posto sobre.

Desde já agradeço
NILSONTRES 03/12/2015 17:32:02
#454758
Já que esta de iniciante, já vai de .net e faça tudo por um terço de tempo que faria no vb6.
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas