Gå til innhold

[løst] select case problemer.


Anbefalte innlegg

Skrevet (endret)

Private Sub Command1_Click()

Select Case kcal.Text
Case Is > "120"
Label14.Caption = "over 120"

Case Is > "100"
Label14.Caption = "over 100"

Case Is > "60"
Label14.Caption = "over 60"

Case Is > "30"
Label14.Caption = "over 30"

Case Is > "0"
Label14.Caption = "over 0"

End Select

End Sub

 

Når jeg kjøer dette, og hvis jeg skriver inn 59 i kcal så får jeg opp "over 120".

Mulig jeg er meget overtrøtt og ikke ser hvorfor dette ikke funker, men

noen som kan forklare meg hva jeg gjør galt?

Endret av Stig Jøran
Videoannonse
Annonse
Skrevet (endret)

Fant en løsning, du må få koden til å behanle det som integer:

 

       Dim Tmp As Integer = Me.TextBox1.Text

 

       Select Case Tmp

           Case Is > "120"

               Me.Label1.Text = ">120"

           Case Is > "100"

               Me.Label1.Text = ">100"

           Case Is > "60"

               Me.Label1.Text = ">60"

           Case Is > "30"

               Me.Label1.Text = ">30"

           Case Is > "0"

               Me.Label1.Text = ">0"

       End Select

Endret av ze5400
Skrevet

Å tilordne en text til en integervariabel er å stole litt mye på de gode makter, det er også dårlig stil. Og tall med gåsetegn rundt er tekst, ikke tall. Tekst vurderes alfabetisk, og dermed er 5 større enn 1, hvilket var problemet fra starten av.

 

Dim Tmp As Integer 
Tmp = Val(Me.TextBox1.Text)
Select Case Tmp
          Case Is > 120
              Me.Label1.Text = ">120"
          Case Is > 100
              Me.Label1.Text = ">100"

 

HTH. beste hilsen Harald

Skrevet (endret)

Bruker Visual Basic 6.0 ja.

 

EDIT:

 

Takk for hjelpen! funket knall nå!

 

Men litt rart det derre, den skal jo egentlig se om text er høyere enn så som så

og da kan det jo egentlig ikke bli feil. :hmm:

Endret av Stig Jøran
Skrevet

Det er da ikke så rart. Alfabetisk er 5 større enn 1, dermed kommer 5 etter 10000 akkurat som F kommer etter ABAKUS. Numerisk er derimot 10000 større enn 5, så det har allverdens betydning om dataene dine er tall eller tekst. Uttrykket "kcal.Text" gir en slags indikasjon om nettopp det.

 

HTH. beste hilsen Harald

  • 1 måned senere...
Skrevet

Jeg har ikke testet denne koden, men jeg har brukt den med stor suksess før:

Dim Tmp as string

Tmp=Textbox1.Text

Select Case Val(Tmp)
         Case Is > 120
             Me.Label1.Text = ">120"
         Case Is > 100
             Me.Label1.Text = ">100"
osv...

 

Degeim

Skrevet
Vel, ser ut til at det å kjøre noe om til Integer ikke kan behandle mange tall, prøvde nettop med 1200000, fikk bare overflow :(

 

Hva annet kan jeg gjøre da?

5900773[/snapback]

 

Ikke så rart, ettersom integer kun går til 33.000 sånn ca! :)

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...