Newsgroup: it.comp.appl.access
Titolo: funzione iif

Salve a tutti,
un problema mi sta facendo schizzare di brutto perchè intuisco che sia 
l'uovo di colombo e chiedo aiuto a voi amici tutti.
Ho un controllo con un numero x, questo numero dovrà essere contabilizzato 
secondo questi criteri:
da 1 a 5 deve dare 5
da 6 a 10 deve dare 10
da 11 a 15 deve dare 15
etc....
in pratica dividendo questo numero per 5 il risultato dovrà essere 5 oppure 
10 oppure 15 e così via.
Poichè il risultato a volte è decimale, come si fa ad arrotondarlo per 
eccesso?
sono in pallone.
grazie a tutti, come sempre generosi di consigli
Antonio 

 10 oppure 15 e così via.
Prova così:
    Dim a As Double, b As Integer
    a = InputBox("Inserisci un numero, anche decimale")
    b = (Int(a / 5) + 1) * 5
    MsgBox b
Spero sia ciò che cerchi. Ciao.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


Grazie per la risposta sollecita,
se non erro devo creare un controllo a e uno b?
Potresti spiegarmi meglio come fare, non sono molto pratico.
P S Avevo dimenticato di dire che tutto il calcolo deve avvenire in report, 
anche se potrei cambiare operare in mask.
Ancora grazie, Antonio

 MsgBox b
...anzi, già che ci sono, ti faccio una funzioncina tipo
l'ARROTONDA.MULTIPLO di Excel
' arrotonda un numero a un mutiplo di peso
' l'arrotondamento predefinito è per eccesso, per arrotondare
' per difetto, impostare a True il terzo argomento
Public Function ArrotondaMultiplo(num As Double, peso As Integer, _
    Optional PerDifetto As Boolean = False) As Integer
    Dim spread As Integer
    spread = CInt(Abs(Not PerDifetto))
    ArrotondaMultiplo = (Int(num / peso) + spread) * peso
' ESEMPI D'USO:
' x = ArrotondaMultiplo(305.9, 5, True) ' restituisce 305
' x = ArrotondaMultiplo(305.9, 5) ' restituisce 310
' x = ArrotondaMultiplo(305.9, 3, True) ' restituisce 303
' x = ArrotondaMultiplo(305.9, 3) ' restituisce 306
End Function
Enjoy.
PS: che c'entra la funzione IIf nel subject?


 ......
quindi il controllo a ce l'hai già. Il controllo b è quel controllo nel
quale vuoi inserire il valore calcolato.
Se hai una textbox che contiene il valore da arrotondare, chiamata txt1,
sostituisci la a con txt1.Text. Poi, in una seconda textbox, chiamata txt2,
metti il valore calcolato, sostituendo la b del codice con txt2.Text.
esempio:
txt2.Text = (Int(txt1.Text. / 5) + 1) * 5
Spero di essere stato chiaro.



come ti metti se il numero e' 5 o 10 preciso?
--
a.cara

 Spero sia ciò che cerchi. Ciao.
Penso che non sia sempre giusto e che la formula giusta sia:
b =Int(a / 5 + 0.9) * 5
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------

 come ti metti se il numero e' 5 o 10 preciso?
Ops, giusto, mi era sfuggito il particolare.
Funzione rettificata:
' arrotonda un numero a un mutiplo di peso
' l'arrotondamento predefinito è per eccesso
' per arrotondare per difetto, impostare a True il terzo argomento
Public Function ArrotondaMultiplo(num As Double, peso As Integer, _
    Optional PerDifetto As Boolean = False) As Integer
    Dim spread As Integer, resto As Double
    resto = num - Int(num / peso) * peso
    If resto Then spread = CInt(Abs(Not PerDifetto))
    ArrotondaMultiplo = (Int(num / peso) + spread) * peso
End Function
' ESEMPI D'USO:
' x = ArrotondaMultiplo(305.9, 5, True) ' restituisce 305
' x = ArrotondaMultiplo(305.9, 5) ' restituisce 310
' x = ArrotondaMultiplo(305.9, 3, True) ' restituisce 303
' x = ArrotondaMultiplo(305.9, 3) ' restituisce 306
' x = ArrotondaMultiplo(305, 5) ' restituisce 305
' x = ArrotondaMultiplo(305, 5, True) ' restituisce ancora 305
funziona con numeri fino a 15 cifre decimali, accetta solo un peso intero e
restituisce un intero. Se si necessita di trattare altri tipi di numeri
vanno modificati i tipi degli argomenti.
E ora vado a prendermi un gelato.


 ha scritto nel messaggio 
news:kLYle.953821$b5.41...@news3.tin.it...

Ciao Happy,
se posso permettermi di esprimere un mio modesto parere, la soluzione più 
"ergonomica" è quella che ti ha suggerito Giorgio Rancati sull'altro NG
-------------------------
Y=Int(X / 5 + 0.9) * 5
dove X è il tuo numero che va da 1 a n
-- 
anche se effettivamente "yronium" ha creato una bella funzioncina ;-)...
Buona domenica
Gaspare