Jag har ålder som ett decimaltal och vill testa vilket intervall det ligger i. Nedanstående Select Case-sats fungerar inte om åldern ligger i "glappet" mellan första och andra Case-satsen. Hmmmm ... kom just själv på ett sätt att lösa det. Jag skulle skrivit: Tack Andreas! Den går igenom Case satserna och väljer den första som uppfyller vilkoren. Om satsen innan inte uppfyller vilkoret. Kan man använda detta i nästa case sats. Select Case med decimalt tal
<code>Dim dblAge As Double
dblAge = 59.999
Select Case dblAge
Case 55 To 59.99
MsgBox "55-60"
Case 60 To 64.99
MsgBox "60-65"
Case Else
MsgBox "Inget av dom"
End Select</code>
Finns det inget sätt att skriva villkoret så att det inte blir något glapp? Typ: Case >= 55 And < 60Sv: Select Case med decimalt tal
<code>Dim dblAge As Double
dblAge = 59.999
Select Case CInt(dblAge)
Case 55 To 59
MsgBox "55-60"
Case 60 To 64
MsgBox "60-65"
Case Else
MsgBox "Inget av dom"
End Select</code>Sv: Select Case med decimalt tal
<code>
Dim dblAge As Double
dblAge = 59.999
Select Case dblAge
Case Is < 55
MsgBox "Inget av dom"
'MsgBox "Mindre än 55"
Case Is <= 60
MsgBox "55-60"
Case Is <= 65
MsgBox "60-65"
Case Else
MsgBox "Inget av dom"
'MsgBox "Större än 65"
End Select
</code>
Mindre antal jämförelser. Blir heller inte någr glapp.Sv: Select Case med decimalt tal
Din kod är nog effektivast. Jag ska dessutom jämföra betydligt fler intervall än de jag angav i exemplet. Vad jag inte visste var att man åker ur Select Case satsen när den hittat en Case-rad som är sann, även om Case-raderna nedanför också skulle bli sanna.
//JanneSv: Select Case med decimalt tal