Arrotonda per difetto
Hai un problema con Excel? 
Arrotonda per difetto
di Slayer data: 28/02/2015 11:46:23
Buongiorno,
Avrei bisogno di qualche chiarimento con la funzione arrotonda per difetto, poichè non riesco a capire come inserire questa funzione nel mio form, esercizio di studio VBA. Mi aspetto che i risultati nei campi del form siano uguali a quelli inseriti nel foglio1 ma dopo svariati tentativi ho ceduto.
2) L'immagine del form vorrei vederla, nel form, completa come l'ho inserita nel foglio 1
3) Consigli su come potevo ottimizzare il mio codice sono molto ben accetti.
Anticipatamente grazie e buona giornata a tutti gli utenti del forum.
di Vecchio Frac data: 01/03/2015 17:56:50
1) Ecco questa è la prova del bug di Round in VBA che offre valori discordi rispetto alla funzione ARROTONDA.
Neanche a farlo apposta come si diceva qualche giorno fa con scossa.
Round ha un comportamento curioso che produce risultati non coerenti.
In breve utilizza una logica di "arrotondamento al pari": se l'espressione che si vuole arrotondare termina con un 5, la funzione ROUND completa l'espressione in modo che l'ultima cifra sia un numero pari.
Per esempio:
Round (12.55, 1) Risultato: 12.6
Round (12.65, 1) Risultato: 12.6
Round (12.75, 1) Risultato: 12.8
In questi casi, l'ultima cifra dopo l'arrotondamento è sempre un numero pari.
Quindi, bisogna tenere a mente questa peculiarità.
Altrimenti è meglio utilizzare Application.Round() che nel caso di 12.65 restituisce (secondo me correttamente) 12.7!
Nel tuo caso specifico comunque nella sub cmdCalcola utilizzerei Floor (secondo argomento messo a 1) oppure RoundDown (secondo argomento a zero) che si comportano altrettanto bene:
LT = Application.RoundDown(CDbl(TxtLarghezzaR.Value) / CDbl(TxtLuceBarra.Value), 0)
oppure
LT = Application.Floor(CDbl(TxtLarghezzaR.Value) / CDbl(TxtLuceBarra.Value), 1)
2) sull'immagine nel form, ovviamente non la posso provare perchè punta a un file locale (percorso e cartelle tue). Quindi non ho idea di come la vedi tu. Ma se dici "completa" forse devi agire sulle proprietà Autosize o PictureSizeMode del controllo immagine.
3) indenta meglio il codice, così è più leggibile.
Metti dei commenti per ricordarti cosa fa il codice.
Evita se puoi le variabili globali.
di Slayer data: 01/03/2015 21:47:06
grazie VFrac per la risposta molto dettagliata.
Per l'identazione del codice mi ricorderò di farlo, peccato che l'editor integrato non aiuti a identare in automatico.
Buona serata!
Vuoi Approfondire?