008. Invio mail tramite VBA

Download PDF

Tramite VBA è possibile inviare email in modo automatizzato.
Di seguito trovare il codice per standard per inviare una mail con l’indicazione
del destinatario, desitinatario in CC ed in BCC, oggetto, testo della mail, allegati.
Si può inseire ad esempio in un progetto per poter inviare una mail standard ad un referente.

Continua a leggere

PowerPivot | Microsoft BI

Download PDF

La Business Intelligence secondo Microsoft,

Il tool si chiama Powerpivot e sembra molto efficacie tale da essere comparabile (?) con altri software di business Intelligence  quali Qlikview.

Personalmente ho molta fiducia in Microsoft e sono curioso di vedere le funzionalita’ di questo strumento.

Stay in touch!

 

PowerPivot | Microsoft BI.

Proteggere i files Excel da lettura e da scrittura

Download PDF

Può capitare di avere dei file Excel che si vogliono proteggere da mani inesperte.

Di solito chiunque apre un file Excel ha il diritto di modificarlo e di salvarlo. A volte non si vuole che certi file possano essere aperti da tutti coloro che accedono al computer oppure che chi vi acceda possa solo leggere i dati contenuti ma non modificarli.

In questo breve tutorial vi mostriamo come fare per:

a) fare in modo che acceda ai dati solo chi è autorizzato (conosca una password)

b) modifichi il file solo chi è autorizzato (conosca una seconda password differente dalla precedente)

Ovviamente chi conosce la seconda password deve conoscere anche la prima mentre non è necessario il viceversa: alcuni potranno accedere al file solo per leggerlo ma non potranno modificarlo.

la procedura è molto semplice:

Prima di tutto bisogna salvare il file con l’opzione “Salva come …” e cliccare in alto a desta sulla indicazione “Strumenti” della finestra di salvataggio per far aprire il menu a tendina, a questo punto cliccate su “Opzioni generali”:

protezione3

 

Si aprirà una seconda finestra dove vi si chiede di inserire le due password di cui abbiamo parlato:

protezione4

(nel file che potete scaricare da qui come esempio le password sono entrambe “a“)

Se attivate il flag “Consigliata sola lettura” Excel, anche quando inserite la password di modifica vi chiederà comunque se preferite aprirlo in “sola lettura” e quindi non poterlo salvare anche se effettuate modifiche.

Bene, il gioco è fatto!  Provate ora a chiudere il file e a riaprilo: invece della solita finestra con il documento comparirà questa finestra di dialogo:

protezione1

 

che vi mostra che il file è protetto e che dovete inserire la password per poterlo vedere. Se non la conoscete vi scordate di accedere ai dati!

Dopo la prima password potete prcedere… inserendo la seconda password infatti adesso excel vi chiede se volete aprire il file in modifica oppure se volete inserire la password per abilitare le modifiche:

protezione2

Se non volete modificare il file potete cliccare sul bottone “Sola lettura” e accedete ai dati. Ma ovviamente vi scordate di modificare il file!

le due password sono inseribili o contestualmente o singolarmente ognuna delle due in modo autonomo dall’altra.

Fate le vostre prove con i file vuoti prima di tentare la strada su un file di dati importante!

Attenzione perché se dimenticate le password NON C’E’ MODO per recuperale. Fate queste attività a vostro rischio e pericolo!

Simulazione di un Ecosistema

Download PDF

Basandoci come stimolo sull’ottimo lavoro di Flavio, presentiamo qui una simulazione di ecosistema che emula le equazioni di Volterra:

Le equazioni di Volterra sono facilmente simulabili con un piccolo programma che qui realizziamo in Excel che si ispira al famoso Wa-tor di Dewdney che ha pubblicato un interessante articolo su Le Scienze (Scientific American) tanti anni fa.

Il programma simula un ecosistema dove si ipotizza l’esistenza di due soli tipi di organismi: le prede e i predatori. I parametri da impostare per la simulazione sono semplici e non hanno nulla a che vedere con le equazioni di volterra.

E’ necessario impostare solo questi parametri:

  • il tempo dalla nascita perché le prede si riproducano
  • il tempo dalla nascita perché i predatori si riproducano
  • il tempo massimo per cui un predatore può restare senza cibo: se il predatore supera questo tempo muore.

in questos cenario molto semplice le prede muoiono solo perché sono mangiate altrimenti prosperano e si riproducono, i predatori mangiano, si riproducono e muoiono solo se non trovano abbastanza cibo.

 

un esempio di questo modello è disponibile all’indirizzo:

http://utenti.quipo.it/base5/javawator/wator.htm

che si rifà alla versione originale di Dewdney che parlava di Pesci e di Squali in un immaginario pianeta tutto fatto di Acqua (Water) e a forma toroidale perché tale forma risulta di più facile simulazione su un calcolatore rispetto a un pianeta sferico. Da Water-Toroidal ecco il significato della parola Wa-tor.

nell’Excel qui scaricabile troverete il simulatore e una simulazione già compiuta con i parametri disponibili. Sono presenti sia l’evoluzione temporale delle popolazioni di Pesci e Squali, sia il diagramma delle fasi che ripercorre in modo incredibilmente preciso il grafico teorico delle equazioni di Volterra.

wator_0

E’ davvero incredibile come le equazioni di volterra si applichino bene a un ecosistema cosi’ semplice. Tale ecosistema però è sufficientemente complesso per far capire a chiunque cosa succede se si perturba troppo il suo equilibrio: provate a cambiare i parametri disponibili: scoprirete che è sufficente poco per portare all’estinzione una o l’altra specie.

Da questo simulatore impariamo una cosa importante: equilibrio di un ecosistema NON significa che le dimensioni delle popolazioni debbano rimanere costanti nel tempo ma significa che esse danzano assieme nell’eterno ballo della vita e della morte. In fondo questa non è un male in senso assoluto ma un tramite per proseguire nella vita.

wator

Note tecniche:

Relativamente al file excel troverete una serie di fogli e una macro:

  • abilitate le macro,
  • andate sul foglio “DB”, cancellate tutto,
  • andate sul foglio “Init”,
  • scegliete i parametri
  • premete il primo tasto in alto “Inizalizza”
  • premete il secondo tasto in alto “fai Evolvere”
  • si passa a un secondo foglio atomaticamente. I quadratini rossi e verdi rappresentano pesci e squali. sulla destra vedrete 3 numeri: il passo della simulazione (tempo), il numero di pesci e il numero di squali
  • quando vi siete stancati della simulazione, per interrompere premete ESC
  • guardate i grafici
  • cambiate i parametri e riprovate!!

 

Riferimenti:

Matematica ed Ecologia: le equazioni di Lotka-Volterra.

Download PDF

Submitted by Flavio Bertamini  on Sat, 30/05/2009

Mi sono divertito ad utilizzare Excel per fargli analizzare alcune equazioni che sono un classico negli studi di Analisi Matematica.

Scherzosamente, possiamo immaginare un’ isola con X lepri e Y volpi che interagiscono, si riproducono e muoiono.
L’analisi di Volterra mostra che lungi dal rimanere stabile la popolazione generalmente evolve secondo leggi ben determinate percorrendo “orbite” particolari come quella nella figura sottostante:

Volterra

Ai lettori meno preparati l’invito a confrontare i risultati ottenuti con quelli della nota Wikipedia, mentre i più smaliziati potranno notare che per ottenere risultati non banali con il personal computer si può agire con un po’ di fantasia senza necessitare obbligatoriamente dei più famosi e blasonati software per il calcolo.
Nel file .zip si trova pure un articolo con dettagli matematici più approfonditi e qualche utile link.

A tutti un invito a fornire critiche e suggerimenti

VitoVolterra

This is the four irons of life have been divided together, right? With a common stain, you can 9 exam answers be friends Why, you dont do it? Xisa replied. Quentin assassinated him Cert Exam in his instructions, and as a result, meaning of exam Xi Sa was unscathed and brought back a new person. Looking back, the third hand in the right hand, a man pass sbb exam without course wearing a dark green military uniform and a big cap on his head, leaned against the crystal wall and faked it The lowhanging hat smashed most of his face in the shadows. exam dates I Practice Exam last night But broke all the dinosaur eggs nearby! Want to live, want to find a correct escape route, come to me! Nigga! Seeing Obamas constipation face, Carter laughed happily. This thickest tendon is connected to the girls brain, and Brain Dumps her exam model soul is detained by this thing. There is no way to go, you can only Sale find your own way! Elsa whispered weakly Xi Sa was silent for a moment and then slowed down He didnt take the sinful thing seriously If updates it is good it http://www.examitpass.com/ will not be too sad to be formatted. the champion of this competition, there are 100 million crystal shields! Special artifact maid set ten Pieces! A set of infinite mountain luxury villas. Of course I went back! I am seriously injured, but it does not mean that the strength is falling There is a magic fly in hand, I am a bad grade Besides. you want to show the male style to attract the attention of the chapter 9 exam answers 2019 opposite sex, dont hit My attention! The misty sister has Certification a clear heart, Real Demo and she has a crush on Rogers Dumps boss. His equipment and abilities were all sealed and Demo Free Download he chapter 5 exam 1 exam over quotes could only rely on his body. Compared to how to pass exam without reading Xiao Zhongmas capable La Traviata, it is far worse! When the price exceeds a certain bottom line, most buyers calm Exams Download down and start measuring the gains and losses. Xi Sa painted a simple map pointing to one behind him Said the direction. The warrior grabbed Owenna exam booking as a shield, hid the bluespotted ratchet on the side, stopped the sun 642-997 Pass magic cannon, and no longer launched an attack Thats right. Soon, smart comets found themselves with extraordinary talent in finance. What do you think? Thoughts? Of course, it is to get rid of the imprint, leave Van Goghs, go out and sway! Dorothy interface said, The life of the grandfather has been good. In a few days, some organizations will Actual Questions come in and pick people If they are selected, they can return to exam tutorial the mainland Like the crusade, the effect is written exam to replace the sentence. Compared exam chapter 9 with this fivestar dragon, Xi Sa and others are like animals being visited. The other party has confiscated the cost price and is already very kind. Lu Qi, who was injured in the body, continued to carry out the third challenge. Then he took out a bunch of keys from his trouser pocket and walked toward the rundown clinic Hey! After the big man left, the drivers door was opened. The floor of the ballroom was raised exam 642 from the left to the right, and the food was placed. Hey, split? Is it the shadow of the body? Seeing the suddenly appearing hairy head, and looking at the exam vs void floating cartoon dinosaur, Kamela Practice Note wondered. Berikov, open the door, Have a business! Hey! The crystal door was opened, and the garbage bags, rusty iron sheets, sawdust and other garbage inside pass exam synonym slowly flowed out of the online exam answers door. Of course, this is dua to pass exam the knockoff goods, only to enter the smashing seeds, can you condense the real silver sword. To this end, 70-347 Question and Answer he must follow the dissidents request, write a full set of mummys resuscitation, contribute the most corpse that Elsa gave him, and only do the best heart engine. How do you hang your family? If you take us Vce & PDF to avoid the risk, is it also to help us pull a ghost in front of the cannon fodder? Anna said. the speed of terror, the power of invincibility, the super nerve reaction, and the temporary undead body This is the highest limit of biology. Xi Sa counts, Elsas money is his own exam 2020 money, and he is sure to take it out, exam questions Nicole is Exam Ref 2V0-621 also sure to persuade, but let himself An elite fancier gave birth to a monkey. Is there any exam updates 2019 ability related to flies? No! Xiao chapter 5 exam Loli shook her head, indicating that the gentlemans father would never be related Brain Dump to the dirty things like flies. Although the two old 700-037 Exam men are pretending to be reconciled, the differences in project design are very large. When the Dark Ring began to inquire about the news of Xi Sa, the parties exam 500-052 were also trying to make the cottage talent feasible exam gst in Camillas private laboratory It is very rare to simulate other talents through talent. doing unconditional good things throughout the mainland every year, what hopes primary school, public welfare tour, crusade against tyrants, stifling disasters.

Matematica – Scomposizione in fattori primi

Download PDF

Flavio Bertamini ci ha mandato questo file che permette di lavorare con i numeri primi:

Permette infatti di:

  • Elencare i primi N numeri primi
  • Scomporre un numero qualisasi in fattori primi

La seconda ovviamente è una procedura ben più complicata della prima.

Il file è ben fatto e quindi rinnoviamo i complimenti per Flavio!

Di seguito la gentile mail che accompagna il documento:

nel ringraziarLa per la mia prima pubblicazione sul Vostro sito, Le mando la versione definitiva del mio lavoro sui Numeri primi, che alla fine direi è abbastanza “gustosa”.

Ho aggiunto un paio di fogli con varianti che mostrano come si possa dare ad un’applicazione Excel una veste più elegante tramite l’uso dei controlli Vba ed infine c’e’ un foglio chiamato Esercizio in cui si mostrano alcuni risultati ottenuti in poco tempo mentre facevo un piccolo testing e scrivevo alcune note per chi intende programmare in Vba.

C’e’ anche un foglio di presentazione. Le note si trovano nel file Articolo.doc (che non contiene macro) che potrebbe rappresentare il giusto commento al lavoro svolto.

Dal punto di vista dell’implementazione del codice ho aggiunto un Modulo2 che contiene una Function la quale serve a riordinare meglio le cose e permette di scrivere rapidamente il codice che gestisce appunto il foglio Esercizio.

Se volete fate girare un po’ il programma prima della definitiva pubblicazione per verificare che non mi sia sfuggito qualche bug ne sarei lieto. Magari potete ottenere dei risultati “interessanti”.

In alcune note nei fogli di .xls ci sono dei risultati che ho ottenuto e che possono essere cancellate per l’uso del foglio di calcolo, così come il grafico ma possono rappresentare una presentazione per chi intende dare una valutazione “rapida” del valore del foglio stesso.

—————

Presentazione

Attraverso questo testo si intende portare l’utente a comprendere meglio l’uso di Visual Basic for Application: uno strumento in grado di potenziare notevolmente ma in modo semplice le nostre capacità di operare con il personal computer. Dopo una necessaria premessa teorica, il più possibile limitata, si procede all’illustrazione di alcuni esempi pratici nell’intento di favorire la presa di contatto del lettore con la materia della programmazione.

Lo scritto intende fornire all’utente, che già conosce abbastanza bene almeno l’uso Excel® standard e di Office® in generale, un potente strumento utilizzabile sia in casa che al lavoro che rende in qualche modo più “padroni” del personal computer e rappresenta un valido modo per avvicinarsi al mondo della programmazione.

Non è adatto a chi considera Excel® un semplice gestore di tabelle.

Ai Lettori:
Questo scritto intende offrire a chi è interessato un esempio sulle tecniche di programmazione più semplici che si trovano attualmente a disposizione in Excel®. L’utente ideale è una persona che conosce abbastanza bene l’uso dei principali applicativi, che ha già cominciato a seguire qualche “Tutorial” su almeno uno dei principali linguaggi oggi diffusi, ma è rimasto deluso perché si è reso conto che il mercato offre “facili” promesse di insegnamento attraverso la rete, i libri, i corsi didattici, ma alla fine le capacità informatiche non sono aumentate, se si esclude la scrittura del programma “Hello Word” o la colorazione di qualche Form in un orrido verde pisello!

In realtà la programmazione è un’ arte, e, come ci invitava lo psicanalista Erich Fromm nella sua celeberrima opera “L’arte di amare”, per diventare maestri nella propria arte non ci sono “vie regie” ma bisogna amare la propria arte e, per riuscire nell’intento di scrivere un programma interessante, bisogna pensare che la via può essere lunga, molto lunga. Premetto che lo scopo finale di questo scritto non è quello di insegnare un linguaggio di programmazione, ma di dire alcune cose sulla “programmazione” in generale, viste con gli occhi di un semplice autodidatta!

Le persone realmente interessate capiranno facilmente che c’è una differenza sostanziale. Un linguaggio di programmazione può essere imparato in pochi mesi ma per “programmare” non basta una vita. Tra l’altro, la programmazione è un’attività essenzialmente comunitaria, che crea enormi interdipendenze, non si può pensare di essere “veramente” dei professionisti lavorando isolati, ma certamente, mentre si stà imparando o si scrive del “codice”, stare da soli è necessario per avere la giusta concentrazione.
In questa solitudine avere un “amico” che ci dà dei suggerimenti può essere utile, e lo scopo del testo è proprio questo…

I mezzi informatici necessari per la comprensione di questo testo non sono straordinari. Basta in realtà avere sottomano il foglio di calcolo Excel® per avere uno strumento molto potente, basta saperlo usare. L’infomatica si sviluppò utilizzando “schede perforate” di cartoncino come memorie per dati e programmi, e per chi, come me, ha incominciato con il mitico Fortran77 a riga di comando, lo sviluppo che ha potuto vedere nel corso degli anni è stato enorme. Anche il semplice “Blocco Note” in dotazione con Windows® sarebbe stato, allora, un lusso inimmaginabile. Nessuno intende chiedervi “ora” di procurarvi una suite professionale mentre state imparando cosa significa programmare, per chi se la sente ci sono a vostra disposizione nella rete molti strumenti, ma l’umiltà, l’impegno, la costanza e la tenacia non si trovano “facilmente” nel Web. Ma gli ignoti “maestri” che hanno dipinto le cappelle preistoriche dell’Europa continentale non avevano certo “pennelli” o luci straodinarie, ma ci hanno comunque lasciato la testimonianza stupefacente delle loro capacità artistiche.

Insomma “programmare” non è una questione di “pennello”…
Non pretendete di avere da questo scritto delle dritte su quale settore della programmaziione iniziarvi o su quali linguaggi siano migliori di altri, sono domande che rivelerebbero l’ingenuità di chi le porge: sarà la vostra intelligenza semmai a suggerirvi come operare.

Non pretendete neppure qualche dritta che vi risolva un problema contingente: per questo c’è innanzitutto il “mitico” tasto F1 e poi la rete Internet. Infine non contate molto sull’appoggio degli altri, di solito chi tenta di evolvere viene irriso e chi produce dei risultati viene visto con una certa invidia.

Un primo esempio: Calcolo con i numeri primi

Aprendo il file NumeriPrimi.xls ci troviamo di fronte ad prima vera applicazione. I vari fogli ci mostrano un utilizzo molto semplice di Vba per Excel®, che richiede conoscenze matematiche molto elementari: il calcolo dei numeri primi. Diciamo molto brevemente, per chi se lo è scordato, che un numero primo è un numero che può essere sottoposto a divisione intera solo per se stesso o per uno (interessante l’articolo su Wikipedia correlato all’argomento). In genere è un problema che si affronta nella scuola media inferiore.

Bertramini01

 

Immaginiamo però di voler sapere “rapidamente” come si scompone in fattori primi un numero come quello in figura nella cella A1 di Excel nell’illustrazione sopra: la cosa potrebbe richiedere un tempo irragionevole a mano o la scrittura di centinaia di celle piene di formule con il semplice Excel.

 

Con Vba per Excel le cose cambiano notevolmente.
In sintesi il nostro programma iniziale dovrà leggere un valore numerico nella cella A1 e ne fornirà la scomposizione in fattori primi nella cella B1.
Come si realizza un simile procedimento? Affrontiamo il problema per gradi: che cosa significa innanzitutto, in termini informatici, che un numero è primo?
Possiamo proporre la realizzazione di una funzione (una Function) che risponda a questa domanda ripercorrendo il classico procedimento imparato alla scuola media.
Infatti il primo passo nel nostro sviluppo è quello di scrivere questa funzione: apriamo dunque l’Ide (Integrated Development Environment) di Vba (con il comando Alt + F11) ed analizziamo il Modulo1 (per aprire cliccare due volte sull’icona della pagina correlata nella finestra “Progetto”).

Il Modulo1 contiene delle routines che vengono utilizzate in tutto il foglio di calcolo.
Incominciamo a leggere:

Option Explicit: è un istruzione che serve ad indicare al compilatore che ci si servirà della dichiarazione esplicita delle variabili, è sempre bene usare questa formulazione quando si programma anche se non è strettamente obbligatorio, in tal modo si evitano spesso degli errori grossolani che generano fastidiosi problemi in fase di debug.

Option Base 1: questa istruzione indica al compilatore che i nostri array partono con l’indice 1 e non zero come altrimenti accade.

Public Primi(5000) As Double : Primi() è un array che contiene cifre a doppia precisione e ci serve per immagazzinare i primi 5000 numeri primi.

In seguito analizziamo la function isPrime che rappresenterà il cuore del nostro programma .

Public Function isPrime(ByVal variabile As Double) As Boolean
 '-----------------------------------------
 ' determina se un numero e' primo
 '-----------------------------------------
     Dim isPri As Boolean
     Dim Modo As Integer
     Dim i As Integer

     isPri = True
     For i = 2 To 5000
         Modo = variabile Mod Primi(i)
         If Modo = 0 Then
             isPri = False
             Exit For
         ElseIf Primi(i) * Primi(i) > variabile Then
             Exit For
         End If
     Next
     isPrime = isPri

End Function

Cosa dice la nostra routine?
Public significa che la routine è visibile in tutto il nostro progetto; isPrime legge la “variabile” come doppio, ed effettua un confronto con l’array Primi() nel ciclo For.
Il valore restituito è un booleano (Vero/Falso).
Vediamo di seguito come nella memoria del Pc viene rappresentato l’array Primi().

Bertramini02

 

L’array Primi() conterrà quindi le cifre 2,3,5….fino a 48.611 cioè i primi 5000 numeri primi: supponiamo per il momento infatti che l’array sia già inizializzato. Come procede la nostra routine? All’interno del ciclo For valuta la variabile “Modo” che rappresenta il resto della divisione intera tra “variabile” e l’elemento dell’array Primi(i), attraverso l’operatore Mod.
La variabile booleana isPri è impostata su Vero in ingresso alla routine.
Se “Modo” =0 significa che il mumero non è primo e quindi la nostra variabile isPri sarà falsa. Si può uscire quindi dal ciclo con l’istruzione: Exit For.
Un altro modo per uscire dal ciclo For si realizza quando il quadrato di Primi(i) è maggiore della variabile in oggetto. In tal caso non e’ più possibile avere divisioni intere per la nostra variabile che sarà certamente un numero primo (isPri e’ già impostato in tal senso).
Uscita dal ciclo For il valore della nostra function viene fornito dalla variabile isPri.
Notate che il ciclo inizia con i=2 e questo significa che i numeri pari non vengono valutati
(Primi(1)=2; si suppone infatti che si sappia che i numeri pari non sono primi e si controlli il caso altrove).
Vediamo così che il “nocciolo” matematico si risolve in appena 14 righe di programma.
Rimane da inizializzare l’array che contiene i nostri 5000 numeri primi.
Questo viene realizzato con una Sub chiamata naturalmente Inizializza() che sfrutta a sua volta la Function isPrime.
In sintesi la Sub inizializza “puntualmente” i primi due elementi dell’array Primi() con le istruzioni:

Primi(1) = 2

Primi(2) = 3

Utilizza quindi una variabile temporanea chiamata Start che assume tutti i valori dispari cominciando da 3 e che viene incrementata di 2 ogni volta che viene eseguita l’istruzione:
Start= Start +2.
Notate che il ciclo succesivo For incomincia con i=3 fino a 5000, ma le righe di codice interne vengono eseguite molte più volte perché all’interno del ciclo agisce pure l’istruzione GoTo inizio, che rimanda l’esecuzione all’incremento di Start, e viene letta tutte le volte che il numero analizzato NON è primo senza con questo incrementare la variabile i che controlla il ciclo stesso.
Le poche righe di codice cosa fanno? Trovano i primi 5000 numeri primi.
Le variabile Start viene analizzata dalla function isPrime e se risulta un numero primo viene immagazzinata nell’array Primi() altrimenti viene incrementata di 2.
Il primo valore analizzato, notate bene, è 5 che risulta essere un numero primo.
La variabile booleana pubblica Done viene impostata sul valore “True” alla fine della routine, per indicare al nostro programma che il calcolo dei primi 5000 numeri primi è stato effettuato ed è residente in memoria.
Notate che non c’è contraddizione per il fatto che le due routines così realizzate sembrino mangiarsi la coda l’una con l’altra: infatti la ruotine Inizializza() prima di richiamare la funzione isPrime ha già immagazzinato il numero minimo di elementi (il solo numero 3) che permettono di operare al nostro software.
Non si hanno problemi perché il ciclo For non viene mai completato in questa fase.
Realizzate queste due piccole routines che serviranno in tutto il nostro foglio di calcolo possiamo passare all’utilizzo delle stesse in alcune applicazioni che mostriamo di seguito.

Foglio: Tabella.

Nel foglio chiamato “Tabella”, vogliamo inizialmente far scrivere ad Excel alcuni numeri primi sul foglio di calcolo per controllare rapidamente la validità delle nostre implementazioni. Mettiamoci in modalità “Progettazione” cliccando sull’apposito pulsante. Creiamo quindi un pulsante impostando la proprietà Name al valore BtnTabella e la Caption al valore Tabella. In fase di progettazione possiamo cliccare due volte sul pulsante realizzato, per creare nello Ide di Visual Basic for Application la Sub BtnTabella_Click() che si scatenerà in fase di esecuzione al cliccare sul pulsante stesso.
Notiamo che la Sub così creata è dichiarata Private cioè non è visibile in tutta l’applicazione.
La Sub è molto semplice: dopo aver verificato che la Sub Inizializza() sia stata eseguita, ripulisce il foglio di calcolo dai dati eventualmente scritti precedentemente, e quindi propone un InputBox che ci chiederà il numero di numeri primi che vogliamo visualizzare sul nostro foglio Excel. All’ ok dato all’Input Box seguirà un ciclo For di scrittura nelle varie celle della prima colonna del foglio “Tabella” con completamento finale di un breve titolo. Si consiglia di non salvare troppi dati in fase di chiusura del file .xls anche perché si possono recuperare con un semplice clic. Può risultare comodo il pulsante “Cancella” che con una routine di una sola riga ripulisce il foglio. Indubbiamente sono delle routines che non producono risultati sorprendenti, ma è un utile esercizio iniziale.

Foglio: Scomponi in fattori primi

Nel foglio “Scomponi …” si userranno le due rotines del Modulo1 per scomporre un numero in fattori primi.
La routine CmdScomponi_Click() che viene scatenata tutte le volte che si preme il CommandButton nel foglio durante l’esecuzione.
Per visualizzarla basta premere due volte col tasto sinistro del mouse nella finestra “Progetto” nell’ Ide di Vba sull’icona del foglio di calcolo.
Cosa fa questa routine? Scompone un numero in fattori primi.
Per prima cosa si accerta che la Sub Inizializza() sia stata eseguita attraverso la lettura della variabile booleana Done (che appunto per questo è stata dichiarata pubblica) e nel caso procede alla sua esecuzione. Sappiamo quindi a questo punto, che nella memoria del nostro computer ci sono i primi 5000 numeri primi.
La routine procede all’analisi della variabile Str in cui è stato provvisoriamente immesso il valore della cella A1 e si accerta che non sia un numero con virgola perché in tal caso le operazioni indicate in seguito non avrebbero senso. Tale controllo viene eseguito dalla funzione Instr. In caso di numero con virgola manda un messaggio di avviso all’utente tramite l’istruzione MsgBox e procede alla terminazione della routine. Se invece è stato correttamente immesso un numero naturale questo viene immagazzinato nella variabile Start come doppio.
In seguito procede alla dichiarazione dell’intercettazione degli errori attraverso la dichiarazione: On Error GoTo Errtrap che sposta la gestione di eventuali errori in fondo alla routine.
Il calcolo vero e proprio è costituito dal ciclo For che confronta la variabile Start con i vari numeri primi che abbiamo inizializzato. In Rest è posto il risultato dell’operazione Start Mod Primi(i). Se Rest =0 allora Primi(i) è un divisore di Start: la variabile j, inizializzata a zero, verrà incrementata di 1, l’array Sco() verrà ingrandito di un elemento salvando gli elementi già presenti con l’istruzione ReDim Preserve Sco(j) e conterrà all’interno di Sco(j) un valore pari all’elemento Primi(i), quindi Start verrà diviso per questo numero, la variabile ottenuta sarà chiamata ancora Start e sarà necessario ripartire dalla linea chiamata “inizio” con il nuovo Start ottenuto, per procedere ulteriormente nella fattorizzazione. Nel caso poi che il quadrato di Primi (i) superi il valore di Start, allora Start è un numero primo.
La scomposizione del nostro numero è a questo punto completata nell’array Sco(): con però un piccolo difetto: infatti l’ultima divisione potrebbe avere come quoziente 1. A tale inconveniente provvede l’istruzione:

If Sco(j) = 1 Then
               ReDim Preserve Sco(j - 1)
End If.

Tale istruzione semplicemente elimina l’ultimo fattore di Sco() se questo fattore ha come valore il banale uno.
Non resta che mettere in forma leggibile i vari fattori scrivendo la formula come stringa nella variabile Str che verrà immessa in seguito nella cella B1.
L’istruzione Exit Sub costringe quindi Excel ad uscire dalla procedura mentre le istruzioni succesive vengono eseguite solo in caso di errore e consistono nella segnalazione tramite messaggio critico opportuno e succesivo “Clear” dell’errore stesso.
In tal modo l’utente occasionale non viene coinvolto da Excel nel richiamo standard del debug dell’applicazione.
Se il numero in questione è primo allora il calcolo porterà ad un array Sco() che contiene un solo elemento: in tal caso

Ubound(Sco())=1

e nella cella B1 verrà visualizzata la scritta “Numero Primo”.

In caso contrario la variabile stringa Str viene inizializzata nella forma (‘=) e ad essa vengono poi aggiunti i vari fattori separati da asterischi(*).
Una riprova della validità del nostro programma stà nel fatto che eliminando manualmente l’apice all’inizio della stringa che compare come output nella cella B1 (operando questo tramite Excel), si ottiene una formula di scomposizione vera e propria che viene letta da Excel e darà naturalmente come risultato il numero di partenza.
Facciamo notare inoltre che sebbene i numeri primi immagazzinati siano “solo” 5000 il nostro programma analizza cifre ben più grandi scomponendo in fattori ad esempio numeri come 21.659.636 = 47 * 460.829 dove il secondo fattore è circa 10 volte più grande di Primi(5000).
In generale possiamo dire che 5000 numeri primi sono in grado di soddisfare la curiosità dei dilettanti della matematica, ma nulla vieta, in linea di principio di impegnare Excel e il Visual Basic su terreni più “tortuosi” aumentando la dimensione dell’array Primi()! La dimensione massima possibile di un array varia tuttavia a seconda del sistema operativo in uso e della memoria disponibile. L’utilizzo di array di dimensioni superiori alla memoria RAM disponibile nel sistema comporterà un rallentamento notevole del funzionamento poiché i dati devono, in tal caso, essere letti e quindi scritti su disco. La dimensione, inoltre, è stata scelta anche per rendere il programma abbastanza veloce.

Foglio:Uso dei controlli

Nel foglio “Uso dei controlli” si dà al nostro piccolo programma di calcolo per la scomposizione dei fattori primi una versione grafica più accattivante con l’uso dei controlli Label e TextBox.
La scrittura del codice non richiede molto tempo perché è sostanzialmente la stessa del foglio precedente solo che mentre nel primo avevamo come oggetti le celle di Excel ora abbiamo questi due nuovi controlli. Si può quindi ottenerla facilmente copiando la routine precedentemente sviluppata nel foglio ”Scomponi..” e successivamente apportando le opportune correzioni alla routine in meno di 10 minuti. Il foglio però assume un aspetto decisamente più “professionale”…

Foglio: Esercizio1 (e Modulo2)

Nell’implementazione del codice nei due fogli precedenti si è creata la potenzialità di avere una potente function che scompone in fattori un numero…
Questa function è stata implementata rapidamente e sviluppata a partire dal codice del foglio precedente “Uso dei controlli”, e “sistemata” nel Modulo2 per comodità ed è stata chiamata ScomponiinFattoriPrimi. Invece un Variant ed emette una stringa attraverso le varie uscite…

Questa function è però sufficientemente potente da permettere di scrivere una ruotine che calcola un “Esercizio” di scomposizione in fattori primi in appena 5 righe di codice………

Considerazioni conclusive

Questo breve esempio ha solo un valore “didattico” e può essere interpretato in molti modi…
Questo “software” può essere realmente utile a run-time solo ad un bambino che non ha voglia di svolgere gli esercizi di matematica…..

Chi si occupa da un po’ di Excel® “professionalmente” riconoscerà anche una formattazione ed uno stile dei fogli di calcolo che però è volutamente “dimesso”. Alcune considerazioni diverse potranno esserci per per coloro che intendono apprendere le basi della programmazione…

Una lettura iniziale non comporta la messa in esecuzione delle macro.
Innanzitutto guarderanno come si presentano i vari fogli con una certa calma, e quindi si porteranno con AltF11 a leggere il codice “prima” di mandarlo in esecuzione e cercheranno di capire bene…se possa avere un valore.

Certamente il codice può essere migliorato in molti modi…

Forse ad alcuni sorgerà l’idea di potenziare la Sub di inizializzazione Inizializza nel Modulo1 portando il valore da 5000 a valori più elevati……per vedere come migliorano le prestazioni di Excel nel calcolo…e cercare un prestazione migliorata.

Interessante sarebbe anche inserire una possibilità di lasciar decidere all’utente in apertura del Foglio di calcolo come inizializzare i nostri procedimenti… Questo può essere facilmente implementato scrivendo la seguente:

Private Sub Workbook_Open()
        Inizial = InputBox("A quale valore desideri inizializzare il calcolo?", "Numeri Primi") 
‘ 
‘ 
End Sub

Naturalmente bisogna dichiarare la variabile Inizial. L’autore la lascia con gli apici di commento……..Bisogna inoltre sostituire Inizial dove c’e’ scritto 5000 nelle varie routines…

Ad altri forse potrà interessare l’idea di migliorare la Function che ad esempio dà l’inelegante 128=2*2*2*2*2*2*2 con una scrittura più sintetica del tipo 128= 2^7 e che coinvolge le potenze nell’espressione della nostra stringa.

Certamente modificare e potenziare il codice di un altro non è cosa semplice senza un’adeguata comprensione del problema che intende risolvere….

Per facilitare il compito della comprensione del codice sono stati messi dei commenti tra le righe di codice.
A questo proposito c’è un breve commento nel codice che recita:

 '-------------------------------------------------------------------
 'per i più smaliziati: provate a scrivere a questo punto 
 'la riga seguente così: Str = "=" e mettete in esecuzione
 'basta cancellare un apice eppure...
 '-------------------------------------------------------------------            
                Str = "'="

Questo commento si trova nel Modulo 2.

E’ una specie di indovinello per divertire gli appassionati: Excel® è sempre molto attento…anche agli apici.

La difficoltà principale che si incontra nello scrivere questo programma sta, paradossalmente, nella gestione dei piccoli numeri come 1 che solo in tempi relativamente recenti e’ stato considerato”non primo”.

Infatti la gestione dei “grandi numeri” è un compito che esula dal noto foglio di calcolo.
Gli “smanettoni” potranno divertirsi a far calcolare al programma numeri sempre più grandi.
Faccio notare, infine, che il codice scritto nei due Moduli può facilmente essere esportato agendo sul Menu “File” alla voce “ Esporta File” ed in tal caso si hanno due moduli con estensione bas pronti sul vostro computer che possono essere caricati ad esempio su Vb6 ma anche, con qualche ritocco, su Visual Basic 2008.

Questo però esula dalle considerazioni di questo scritto che è rivolto solo ai conoscitori di Excel.

File di esempio:

NumeriPrimi2

The weapons are the pass the exam quotes shocking knives of the unified configuration. For this inexplicable monk, the captain of the Sharks exam janahi net worth is exam 10 going to Computer Exam kill people, and it is not a exam 010-151 lucky thing to meet the church people at sea. The physical quality is ordinary, this talent is good, garbage, garbage The density of the soul has passed For a long time, the paper man finally left the West. chapter 8 exam 2 just pointing in one exam 700-551 direction, pulling ccna exam are you ready dumpsnetwork reviews The crying room said to the geek. In addition, he capitulo 7 examen resuelto grew up listening to the story of The Three Devils of Middleearth and witnessed the birth of myth. This is a powerful creature with both biological and Answer mechanical properties, designed for combat. Dumps Store Dont Dump worry, I wont treat you all, I need help, not a corpse or a disability. The associations ability in the vicinity of Whitehall was also late and joined the crusade. exam 2020 When the master chapter 6 exam quizlet opened Dumas, he was completely stupid! Nima, what kind exam vs elegant evo 2019 of mummy is this? Why do you meet the mummy rules everywhere, but you cant understand them everywhere? No matter the confectionery engine evolved by the heart engine. Compared with Xi Sa, regardless of appearance, size, or ability, he has Pass Exam to win, but the veil sister, who has a big eyes, a very sweet voice, and a good body. Behind them, the two armored men who have experienced the battle are very calm, not disguised, but really do not feel a little threat. Its really simple, wait, Elsa asked me what the contact is for? Want pass bar exam without law school to mix well, rely on him! Camilla, come and help me find it. Do you think I am like the kind of person who will be bought? Hearing that Xi Sa said Royal Pineapple, Carter had some disdain on his face. The latest virus has already had most of the characteristics of the T virus, and even exam 2018 surpassed it, but the defects are also obvious. living in the FFF burning army arson aggression exam wiki pioneer The captain of the team, the magical power exam center in kolkata of the body, has not broken yet! Where is the little monkey? It is a pity that the captain CCA-500 Pass of the chimpanzee CISA Exam did not know what he thought in the heart of the Tyrannosaurus and the warrior. Most of them are the richest, or the second generation with a hard family background. If she is still alive, she may try one or two, but she is already dead this amol of pass exam morning Augustine shrugged regretfully Dead. In the process Certification of eating the flies, Xi Sa even felt that he had an illusion. At the same time, the female elf, under the protection of her bodyguard, gathered at Osborne exampro uk and confronted Roger. After exam answers chapter 1 the exam center hong kong three met, they 8 exam answers planned chapter 7 exam to search for the leader of Obama. The mighty domineering lowkey luxury, with a 300-209 Pass set of Certification Exams stainless steel chew saddle rope, the mount comes with antitheft, navigation and automatic foraging function. He exam with hair always made some Actual Questions Actual Questions Study Guide Book owing things, exam coupon and he remembered to eat and remember, and once he committed it again, he could never change it However, Elsa was not annoyed, but she was very indulgent. Just stretch your arms and let them bite, and you wont get infected. Countless boys in exam forum the first grade are grateful to Dade, the beautiful and great Dorothy Queen, who won four table tennis cases, a badminton court, and half a basketball court! This chapter 5 exam is the resource that the thirdgrade seniors can Exam Ref 640-911 have! This is the Stockholm Syndrome that my brother said? ! Looking at the group of devout believers in the class, Dorothy comforted. Do you try to inject some strange things into your blood vessels? Its strange to die! Dorothy argued My sisters bloodline is perfect. I really fulfilled the idea of ?Xi Sa The old man made a snap, and then Dorothy in the eyes of Cesare became blurred. This thing is worn on the ear, must be very personal? Is it sure? This exam at substitute pair of earrings? Well! Xi Sa nodded. in addition to the experience of the whip corpse for half a year. When Gossner completed exam prep real estate the threetime combo, her body and the black king generally expanded uncontrollably. Finally, the seniors are It Dumps PDF has not been exam in pearson dangerous to say that the http://www.examitpass.com/ exam 4 answers 2017 wilderness is in danger. past exam dates for nbde part 1 & 2 The caves they inhabited last night are still far away from the old nest of the dragon. However, I am still a bit weighty in the Continental Aeronautics and Space Administration What do you have? Grandpa G asked.

La “classe” non è … acqua: un suggerimento sulla programmazione ad oggetti

Download PDF

Il piccolo file allegato vuole mostrare l’uso un po’ più sofisticato che si può realizzare in Excel all’interno di Vba. Infatti abbiamo mostrato come si realizza una piccola classe: la classe Quadrato. Un ottimo lavoro nell’ambito mi sembra quello di Emanuele Mattei nel suo blog:http://blog.shareoffice.it/emanuele/articles/9973.aspx ma è indicato soprattutto per Vb.Net e C#. Invece la programmazione ad oggetti può aver luogo anche in Vba e in particolare in Excel. Il file mostra come si può calcolare l’area di un quadrato in vari modi: con le formule, con una piccola macro, con una classe. L’ultimo modo è certamente il più complicato, ma come esempio di costruzione di una classe deve essere visto al di là dei risultati immediati. In realtà per apprezzare i vantaggi nell’utilizzo delle classi bisogna scrivere codice. La nostra classe rappresenta sostanzialmente un quadrato geometrico: specificando il lato che viene memorizzato e che può essere letto e variato, rimangono fissate le proprietà conseguenti: diagonale, area, perimetro. Inoltre, come detto, il nostro quadrato possiede due “metodi” non euclidei: può essere ingrandito o rimpicciolito di una percentuale fissata. Una volta compiuto il lavoro di implementazione della classe vediamone l’uso: per prima cosa si deve creare un’istanza nel nostro programma con l’istruzione: Dim Q As New Quadrato. In questo modo si fa sapere ad Excel che Q è un “oggetto” della classe quadrato. Questa istruzione deve essere fatta per prima. Quindi abbiamo realizzato due piccole routines: la prima calcola l’area esattamente come si potrebbe fare in altro modo, la seconda utilizza il metodo IngrandisciP per incrementare il lato del quadrato. Notate come non compaiano formule matematiche nel codice del foglio1. Ma i fatti più interessanti accadono nell’Ide. Vediamo nell’immagine seguente come si comporta Vba quando scriviamo Q. dopo aver dichiarato che fa parte della classe Quadrato.

Ide

Vba correttamente ci indica quali metodi e proprietà possono essere applicate a Q.

Quadrato

007. Salvataggio file tramite VBA

Download PDF

Domanda:

vorrei chiederle un controllo del codice seguente, lo scopo del codice è il salvataggio del file in una directory specifica e se la directory esiste, salvare il file con il nome specifico.
in attesa

Sub salvaFile()
 On Error GoTo mess
 Dim p As Worksheet
 Dim Directory As String
 Dim NomeFile As String
 Dim ctrl As Boolean
 Dim x As Integer
 ctrl = True
 x = 1
Set p = Worksheets("R22-3")
Directory = p.Cells(23, 20).Value
 NomeFile = p.Cells(24, 20).Value
Do While ctrl = True
 ctrl = Len(Dir(Directory & NomeFile))
 x = x + 1
 Loop
ChDir Directory
 ActiveWorkbook.SaveAs Filename:=NomeFile, FileFormat:=xlNormal, Password:="", writerespassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
mess:
 msgbox "Errore - Riprovare"
End Sub

Risposta:

Nel codice bisogna apportare 2 modifiche:

1) sostituire ‘Filename:=NomeFile’ con ‘Filename:=Directory & NomeFile’, se ha scritto la directory con ‘\’ alla fine, o in caso contrario con ‘Filename:=Directory & “\” & NomeFile’

2) scrivere Exit Sub prima di mess: altrimenti il messaggio di errore appare anche in assenza di errori

Riccardo Vincenti

006. Cercare parola in un testo – VBA

Download PDF

Domanda:

Salve, volevo sapere se in qualche modo era possibile creare un foglio excel per questo lavoro: Fare una 3 colonne rispettivamente: “titolo film” “produttore” e “attori” e una volta scritti film produttori e attori , una volta ordinato (per esempio) in base ad un particolare attore gli titolo e produttore seguono l’ordinamento dell’attore di quel film. Spero di essermi spiegato bene, grazie della risposta.

Risposta:

nel file allegato trovate la macro per cercare una parola in un testo e restituire le informazioni collegate. Filtra Attore

Riccardo Vincenti