Oppure

Loading
12/11/09 10:50
mash_mash
Ciao a tutti , vi sottopongo un problema che mi attanaglia da ieri :
ho una list box 1 textbox e 1 label
nella listbox ho caricato questi elementi numerici :
700,800,900,1100,1400,1300,1500,1800,2200

nella text1 chiedo all'utente di inserire un numero ,
se il numero inserito è presente nella listbox , allora
label.caption = val(text1)
se invece il valore inserito non è presente nella lista , ma e' minore dell'ultimo
elemento allora nella caption della label deve comparirmi il 1^ valore trovato superiore a quello
digitato nella text1 , se invece il valore digitato è maggiore rispetto all'ultimo
elemento della lista allora messaggio con scritto "il valore massimo inserito è 2200".

esempio 1 : digito 1200
label.caption = 1300 (il valore successivo a quello digitato)

esempio 2 : figito 2250
label.caption = 2200 (ultimo elemento della lista) + messaggio ""il valore massimo inserito è 2200"

Pensavo inanzitutto di confrontare il valore inserito con l'ultimo della lista (per vedere se era compreso nel range della stessa lista)
dopodichè creare un array con i valori della lista , confrontarli con il valore della text1 , se ne trovo uno uguale allora
mi fermo , invece se non trovo 1 valore uguale li passo uno per uno fino a fermarmi al primo valore superiore a quello
digitato.
Voi che ne dite , potrebbe funzionare ? Mi dareste una mano a buttare giù qualcosa ?
Si può eventualmente semplificare ?
Grazie
aaa
12/11/09 13:05
Iohoilpotere
io di vb mi ricordo davvero poco ._. te lo scrivo in uno pseudoVB sperando possa aiutarti :)
Dim var1 as integer
var1 = textbox.text 'numerizzata, ma non ricordo il comando per la conversione
I = 1
Do
    Select case Var1
        case is = listbox.item(I) 'c'è la proprietà item in vb? ._.
            label.caption = var1
            break 'non mi ricordo se c'è il break in vb, nel caso usa un goto xD
        case is < listbox.item(I)
            label.caption = listbox.item(I)
            break 'come sopra ;_;
        case is > listbox.item(I)
            I=I+1
loop until I = 'il valore massimo di una listbox, che non mi ricordo da che proprietà si vede...
if label.caption = "" then
    label.caption = listbox.item(I)
end if

Ultima modifica effettuata da Iohoilpotere 12/11/09 13:07
aaa
12/11/09 14:13
Alfonso
Se nella listbox introduci i valori in ordine di grandezza (dal più piccolo al più grande)
con la proprietà Sorted=False

Private Sub Text1_Validate(Cancel As Boolean)

' guarda che non sia più piccolo del primo della lista
If Val(Text1.Text) < Val(List1.List(0)) Then
Text1.Text = List1.List(0)
Exit Sub
End If
' guarda che non sia più grande dell'ultimo della lista
If Val(Text1.Text) > Val(List1.List(List1.ListCount - 1)) Then
Text1.Text=List1.List(List1.ListCount - 1)
MsgBox "Troppo grande"
Exit Sub
End If

Dim i As Integer
For i = 0 To List1.ListCount - 1
If Val(Text1.Text) <= Val(List1.List(i)) Then
Text1.Text = List1.List(i)
Exit For
End If
Next

End Sub
aaa