Hej hmmm. Hej Tobbe! Hej Hej Sven! Hej Håkan Det är "dubbelfnuttarna" runt värdena som gör att jag tror att det är strängvärden. Hej Så är det, vi får vänta på Tobbes svar om hur det ligger till. Hej Hej Tobbe! Hej Undrar eftersom alla siffror i din kod har "dubbelfnuttar" (citationstecken) runt sig vilket gör att de tolkas som stränvärden. Hej I det första exemplet så testade du bara mellan 2000 och 4000 km.If else sats som inte funkar som jag vill
Finns det någon smidigare lösning på detta som inte funkar!!!!
'>20000 < 40000km
ElseIf LblDay <= "-15" And txtDawa(9) > "20000" And txtDawa(9) < "40000" Then
lblproc = "90 %"
ElseIf LblDay > "-15" And LblDay < ("-18") And txtDawa(9) > "20000" And txtDawa(9) < "40000" Then
lblproc = "80 %"
ElseIf LblDay > "-18" And LblDay < ("-21") And txtDawa(9) > "20000" And txtDawa(9) < "40000" Then
lblproc = "70 %"
ElseIf LblDay > "-21" And LblDay < ("-24") And txtDawa(9) > "20000" And txtDawa(9) < "40000" Then
lblproc = "70 %"
ElseIf LblDay > "-24" And LblDay < ("-27") And txtDawa(9) > "20000" And txtDawa(9) < "40000" Then
lblproc = "25 %"
ElseIf LblDay > "-27" And LblDay < ("-30") And txtDawa(9) > "20000" And txtDawa(9) < "40000" Then
lblproc = "20 %"
ElseIf LblDay > "-30" And LblDay < ("-33") And txtDawa(9) > "20000" And txtDawa(9) < "40000" Then
lblproc = "15 %"
ElseIf LblDay > "-33" And LblDay < ("-36") And txtDawa(9) > "20000" And txtDawa(9) < "40000" Then
lblproc = "0 %"
mvh
TobbeSv: If else sats som inte funkar som jag vill
Kör en IF sats för att kolla mellan 20000 och 4000
Inuti IF satsen kör du en SELECT CASE sats för att ta reda på procentsatserna, lite snyggare och enklare.Sv: If else sats som inte funkar som jag vill
Är det meningen att värden som 18, 21, 24, 27, 30, och 33 inte ska "vara" med?
Nu testar du om "LblDay" är mindre och större, men inte lika med.
Glöm inte "End If" (såg inte att den var med).
Håller med [hobbe] om att en inledande IF sats där du kollar att "txtDawa" är större än 2000 och mindre än 4000, och sen använder du en SELECT CASE sats för att avgöra vilket värde "LblDay" har, är enklare (och snyggare).
Just det, använd gärna parenteser runt de utryck som står före och efter "AND", speciellt när de blir längre (som i ditt fall).
(Hjälper kompilatorn att hålla isär begreppen).
/Håkan Sv: If else sats som inte funkar som jag vill
Du snurrar till det med > och < duktigtiga tag
Den här raden slår ut alla de andra
ElseIf LblDay <= "-15" And txtDawa(9) > "20000" And txtDawa(9) < "40000" Then
lblproc = "90 %"
Det blir allt som är mindre än - 15 kommer att fastna här dvs - 15 till - mycket mycket
Försök spalta upp det efter denna princip.
< än ett minustal gör ju att siffervärdet ökar.
ex. < - 15 -27 stämmer på detta påstående.
Ta ett papper och fyll i de - intervall som skall ge respons.
ex. -18 till - 15 -22 till - 19 - 26 till - 23 osv osv.
börja bakifrån det blir enklast att tänka så , dvs -36 To -33 , -32 To -29 osv
placera sedan in dessa i Case satserna enl nedan
Dim lDay As Long, lDawa As Long
lDay = LblDay.Caption
lDawa = txtDwa(9).Text
Select Case lDawa
Case 20001 To 39999
Select Case lDay
Case Is >= -15
lblproc.Caption = "90 %"
Case -36 To -33
lblproc.Caption = "0 %"
osv osv
End Select
End Select
Du har 70 % på två ställe
/SvenSv: If else sats som inte funkar som jag vill
Har du tänkt på att han jämför strängar i sitt exempel?
Första raden blir bara sann när "LblDay" är -15 och uppåt (mot noll och plus).
I "strängvärlden" är ju konsigt nog -15 faktiskt mindre än -18 o.s.v.
/HåkanSv: If else sats som inte funkar som jag vill
mmmmmmmmmmmmmmm. !?
Han får väl svara själv, men nog tror jag att värdena
representerar nummeriska matte värde.
/SvenSv: If else sats som inte funkar som jag vill
Vad tror du (om "dubbelfnuttarna")?
/HåkanSv: If else sats som inte funkar som jag vill
Jo rent sakligt är det ju strängar, men tror i allafall att dom representerar
numeriska värde , såg att det står Km och det står %(procent).
Har märkt att det ibland tydligen är svårt att skilja på strängar och tal.
Kör min gamla "littania" postnummer telefonnummer mfl. är strängar
mil km Kg är för det mesta tal som man vill göra "matte" av.
Den gode Tobbe får väl komma in och reda ut begreppen.
/SvenSv: If else sats som inte funkar som jag vill
Precis som du tror jag också att det ska vara numeriska värden.
Men om han skickar dom till "<" och ">" operatorn med "dubbelfnuttar" så........!
Han får typkonvertera dom, om han vill få tillstånd en numerisk jämförelse.
Som sagt, vi får avvakta Tobbes nästa inlägg. :-))
/HåkanSv: If else sats som inte funkar som jag vill
Tackar för intresset, jag har suttit och försökt få till en if sat med select sats men får inte till det.
Detta har jag fått att funka men lite grötigt tycker jag.
If Text2.Text <= "-15" And Text1.Text <= "20000" Then
Lblproc = "100 %"
ElseIf Text2.Text <= "-15" And Text1.Text >= "20000" And Text1.Text <= "40000" Then
Lblproc = "90 %"
ElseIf Text2.Text <= "-15" And Text1.Text >= "40000" And Text1.Text <= "60000" Then
Lblproc = "80 %"
ElseIf Text2.Text <= "-15" And Text1.Text >= "60000" And Text1.Text <= "80000" Then
Lblproc = "70 %"
ElseIf Text2.Text <= "-15" And Text1.Text >= "80000" And Text1.Text <= "99999" Then
Lblproc = "60 %"
ElseIf Text2.Text > "-15" And Text2.Text <= "-18" And Text1.Text <= "20000" Then
Lblproc = "90 %"
ElseIf Text2.Text > "-15" And Text2.Text <= "-18" And Text1.Text >= "20000" And Text1.Text <= "40000" Then
Lblproc = "80 %"
ElseIf Text2.Text > "-15" And Text2.Text <= "-18" And Text1.Text >= "40000" And Text1.Text <= "60000" Then
Lblproc = "70 %"
ElseIf Text2.Text > "-15" And Text2.Text <= "-18" And Text1.Text >= "60000" And Text1.Text <= "80000" Then
Lblproc = "60 %"
ElseIf Text2.Text > "-15" And Text2.Text <= "-18" And Text1.Text >= "80000" And Text1.Text <= "99999" Then
Lblproc = "50 %"
End If
Det jag skall göra är att först tar jag ut antal månader och sen kollar antal km
efter en mall som anges med procentsats.
mvh
Tobbe
Sv: If else sats som inte funkar som jag vill
Undrar om det är sträng- eller numeriska värden som du jämför (se diskussion ovan med Sven)?
/HåkanSv: If else sats som inte funkar som jag vill
Numeriska värden är det när man anger mätarställning men antal månder blir en sträng efter som när jag tar ut antal månader mellan två datum blir det -12 när man kollar ett år bakåt t,ex.
kan kanske ändra detta så att minus tecknet tas bort.
/TobbeSv: If else sats som inte funkar som jag vill
Ta det senaste datumet först (byt plats på de två datumen du jämför) så får du väl ett positivt svar, eller?
HåkanSv: If else sats som inte funkar som jag vill
Jag tog bort "fnuttarna" och ändrade plast på datumen och funkar bättre tack
fortsätter med att få till en någon select sats eller bättra på koden för detta ända mål.
Mvh tobbeSv: If else sats som inte funkar som jag vill
I det andra är det helt andra avstånd som testas, från 2000 upp till 9999.
Detta gäller också månaderna som i det sista exemplet bara verkar gälla -15 och mindre, samt -16 till -18.
Försöker förstå hur det ska testas, så att jag kanske kan hjälpa till med kod.
/Håkan