Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di 1sirena
    Registrato dal
    Mar 2008
    Messaggi
    163

    Problemi con una select case

    ciao!
    sicuramente sbaglio qualcosa perche' l'applicazione mi si blocca su alcuni controlli.
    prima di tutto non so' se s possono definire più variabili all'interno di una select case, poi non sò se ho sistemato bene gli annidamenti; qui di seguito c'è il codice che ho utilizzato:

    Private Sub Panel1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Panel1.Click
    Dim risultato As Integer
    Dim ris As String

    Select Case Val(Peso.Text) And Val(Altezza.Text)
    Case Val(Peso.Text) < 30
    MsgBox("Il valore relativo al peso è eccessivamente piccolo!", MsgBoxStyle.Exclamation)
    Case Val(Peso.Text) > 250
    MsgBox("Il valore relativo al peso è eccessivamente grande!", MsgBoxStyle.Exclamation)

    Case Val(Altezza.Text) < 1.2
    MsgBox("Il valore relativo all'altezza è eccessivamente piccolo!", MsgBoxStyle.Exclamation)
    Case Val(Altezza.Text) > 2.3
    MsgBox("Il valore relativo all'altezza è eccessivamente grande!", MsgBoxStyle.Exclamation)

    Case Val(Peso.Text) < 30 And Val(Altezza.Text) < 1.2
    MsgBox("I valori relativi al peso e all'altezza sono eccessivamente piccoli!", MsgBoxStyle.Exclamation)
    Case Val(Peso.Text) > 250 And Val(Altezza.Text) > 2.2
    MsgBox("I valori relativi al peso e all'altezza sono eccessivamente grandi!", MsgBoxStyle.Exclamation)
    Case Val(Peso.Text) < 30 And Val(Altezza.Text) > 2.2
    MsgBox("Il valore relativo al peso è troppo piccolo e quello relativo all'altezza è eccessivamente grande!", MsgBoxStyle.Exclamation)
    Case Val(Peso.Text) > 250 And Val(Altezza.Text) < 1.2
    MsgBox("Il valore relativo al peso è troppo grande e quello relativo all'altezza è eccessivamente piccolo!", MsgBoxStyle.Exclamation)
    Case Val(Peso.Text) = "" And Val(Altezza.Text) <> ""
    MsgBox("Inserisci il peso!", MsgBoxStyle.Exclamation)
    Case Val(Peso.Text) <> "" And Val(Altezza.Text) = ""
    MsgBox("Inserisci l'altezza!", MsgBoxStyle.Exclamation)

    Case Else
    risultato = (Val(Peso.Text) / (Val(Altezza.Text) * Val(Altezza.Text)))
    ris = risultato
    Select Case risultato
    Case Is < 18.5
    RisultatoIMC.Text = "il tuo IMC è: " + ris & vbCrLf & "ATTENZIONE!" & vbCrLf & "Sei sottopeso"
    Case 18.6 To 25
    RisultatoIMC.Text = "il tuo IMC è: " + ris & vbCrLf & "Sei normopeso"
    Case 25.1 To 30
    RisultatoIMC.Text = "il tuo IMC è: " + ris & vbCrLf & "Sei sovrappeso"
    Case 30.1 To 40
    RisultatoIMC.Text = "il tuo IMC è: " + ris & vbCrLf & "ATTENZIONE!" & vbCrLf & "Sei obeso"
    Case Is > 40.1
    RisultatoIMC.Text = "il tuo IMC è: " + ris & vbCrLf & "ATTENZIONE!" & vbCrLf & "Sei gravemente obeso"
    End Select
    End select
    End Sub


    grazie ciao

  2. #2
    in una select case non puoi studiare più di una variabile

    scrivendo

    Select Case Val(Peso.Text) And Val(Altezza.Text)

    stai studiando il risultato dell'operazione logica Val(Peso.Text) And Val(Altezza.Text)

    se vuoi effettuare dei controlli sui valori dei 2 campi devi effettuarli specificatamente.

  3. #3
    un altro paio di cose:

    hai messo risultato come intero, quindi il risultato della divisione verrà troncato. forse ti conviene metterlo come double.

    assegni ris (stringa) = risultato quando ti basta mandare la messagebox mettendo risultato.ToString() e ti risparmi l'utilizzo di una variabile ridondante.

    nell'ultima select case (quella dove studi il risultato) scrivendo Case 18.6 To 25 e poi Case 25.1 To 30 ti perdi i valori come 25.05 che non rientrano in alcun case, scrivi invece Case 18.6 To 25 e poi Case 25 To 30

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.