Svolgere calcoli col VBA. - dal 04/09/04 pagina vista: volte Questo articolo è destinato ai "pellegrini" ai primi passi nel vba, e se pure tutte le informazioni che qui useremo sono contenute in articoli sui due siti ennius, le ripetiamo, riunendo i concetti, cercando di esemplificare al massimo. Invito comunque gli interessati a leggersi almeno questi due articoli:
Inoltre ricordo che nello sviluppo di calcoli, esiste una priorità nello svolgimento di più operazioni aritmetiche concatenate, e la sequenza è:
Bene, iniziamo quindi a vedere intanto come reperire, in vba, dei dati presenti in celle del foglio di lavoro; supponiamo di avere una situazione simile a questa:
In A1 abbiamo il valore 10000 e nella cella B1 30 : vogliamo calcolare lo sconto del 30% su 10000. Rimane però da decidere cosa fare con lo sconto che otterremo; abbiamo due possibilità: usare il valore ottenuto per successivi calcoli sempre in vba, oppure inserire lo sconto ottenuto in una cella. Vediamo entrambe le soluzioni, in due varianti.
Se noi facessimo l'operazione per lo sconto manualmente, noi eseguiremmo queste operazioni aritmetiche: 10000 moltiplicato 30, dividendo il prodotto per 100; lo stesso faremo in vba, ma usando al posto dei valori i riferimenti alle celle che li contengono, così:
Ora però bisogna dire al vba cosa fare del risultato dell'operazione, che al momento è tenuto in memoria, e qui decideremo se inviare direttamente in risultato ad una cella, usando il riferimento della cella a cui inviarlo, così:
oppure tenerlo in memoria, ma, assegnandolo ad una variabile; potremo in questo modo usare la variabile sia per successivi calcoli, sia per inviare la variabile stessa ad una cella. Usiamo quindi una parola, "Sconto", come nome con cui chiamare la variabile, e la nostra istruzione diventerà:
Tanto per concludere con questo esempio, ora simuliamo di svolgere lo stesso calcolo ma con valori posti su tre celle di tre diversi fogli; usando il nome del foglio per identificare la cella, possiamo eseguire calcoli senza necessariamente selezionare o attivare i fogli interessati; questo vuol dire che potremo anche lanciare la macro da un quarto foglio, esempio:
e queste le istruzioni:
se avremo lanciato la macro dal Foglio 4, tornando al Foglio3 vedremo in C1 l'importo 3000. Prima di passare ad un'altro esempio di calcolo concatenato, è opportuno ricordare due cose:
Vediamo comunque in cosa consiste usare i due modi:
Questo "definire" il tipo di dato diventa necessario perchè non sempre lavoriamo con numeri a cifra tonda (come 10000 op. 30), provate a considerare cosa succede se al posto di 10000 avessimo 11232, e al posto di uno sconto 30, avessimo 31,5: otterremo per forza di cose un numero con decimali come risultato, cioè 3538,08, dove avremo bisogno che anche i decimali figurino nel valore restituito. Ora, parecchi problemini li risolviamo a volte con la giusta impostazione del "formato cella" nel foglio di lavoro, ma la decisione di una nostra scelta nel decidere il "formato cella", può influenzare poi la costruzione dei conteggi in vba. Prendiamo ad esempio la tabella vista all'inizio, e supponiamo che per la cella B1, quella che contiene il valore di sconto, anzichè a "formato cella : standard" la si sia impostata a "formato cella : percentuale", quando noi scriveremo il valore 30, Excel automaticamente lo considera un valore percentuale e gli assegna il simbolo del percento ( % ) e come tale lo considera. Questo formato è già equivalente a 30/100, quindi se useremo il riferimento a B1, il valore passato NON necessita di ulteriore divisione per 100: vedremo sul foglio questo:
e noi nel conteggio in vba dovremo tenere conto di questo fatto ed usare questa istruzione (ripeto solo il primo esempio):
abbiamo tolto la divisione per 100 ( / 100 ), ma in C1 ci sarà 3000, perchè in questo caso in B1 è come se ci fosse 0,3 e quindi moltiplichiamo 10000 x 0,3 che restituisce 3000. Ora vediamo invece esempi di calcoli un pochino più complessi (ma comunque semplici) : anzichè nella cella C1 ottenere lo sconto, vogliamo ottenere la cifra netta di sconto, quindi 10000 - 3000 = 7000; dobbiamo comunque effettuare il calcolo della percentuale di sconto per ottenere l'importo dello sconto da sottrarre all'importo iniziale: anche in questo caso possiamo seguire istruzioni diverse, primo esempio:
secondo esempio con uso di una variabile "Sconto" (senza dimensionamento, ma con funzione CDbl)
oppure se avremo usato in B1 il valore 30% (in percentuale)
ultimo esempio: supponiamo di voler applicare alla cifra 10000 lo sconto 30% e in più uno sconto extra del 10% (attenzione, sto usando i valori sconto con formato cella a "percentuale"). Useremo quindi una cella come contenitore del valore di sconto extra, la C1 ed il risultato lo vorremo in D1
In genere questo tipo di extra sconti non si calcola sulla cifra iniziale, ma sulla cifra netta del primo sconto; anche in questo caso possiamo scegliere varie forme di calcolo, io vi presento questa:
Ricordarsi di porre attenzione alle parentesi (tante aperte ne vogliono altrettante chiuse). E' pure evidente che esistono moltissime necessità d'impostazione calcoli (matematici, non renali o biliari), ed è impensabile esemplificarli tutti, aiutatevi quindi con la guida in linea per cercare soluzioni ai vostri problemi. Comunque due altri esempi li possiamo vedere: Estrarre la radice quadrata di un numero: si usa la funzione Sqr(valore) - se vogliamo la radice quadrata del valore che è in A1 (10000), possiamo usare una variabile "Ris" che conterrà il risultato, così:
Elevare a potenza un numero : si usa l'operatore ^ posto tra il numero da elevare a potenza e il suo esponente; sia numero che esponente li possiamo anche reperire da valori posti nelle celle, ed useremo quindi i riferimenti alle celle così:
I visitatori pratici di vba riterranno questo articolo superfluo, ma, credetemi, sono in molti a non aver chiaro come svolgere calcoli. Spero di esser stato loro d'aiuto. Buon lavoro a tutti. prelevato sul sito www.ennius.altervista.org |