DÊVIDA SOBRE O IF
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
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
Para números decimais, use o ponto, não a vÃrgula:
If resultado >= 17.01 Then
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[Ô]
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
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?
Provavelmente a sua variável [Ô]resultado[Ô] não é um valor numérico. Faça assim:
If Cdbl(resultado) >= 17.01 Then
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
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
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.
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
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
Já que esta de iniciante, já vai de .net e faça tudo por um terço de tempo que faria no vb6.
Tópico encerrado , respostas não são mais permitidas