Arrotonda per difetto



  • 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.



     
    Allego il file



  • 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!