Usare Excel al meglio con il VBA - Parte 1

google-plus Scritto da . Postato in Excel

Microsoft Office Excel è uno degli strumenti più potenti nel campo della gestione dei numeri e dei dati in generale.
Ma usare Excel senza le macro, o meglio le macro in Visual Basic (A sta per application), è come avere una bella Ferrari e tenere sempre la prima.
Quindi ci sono alcune cose che possiamo fare per migliorare e rendere produttivo il nostro “amato” programma.

Il seguente tutorial è ideato per chi possiede Office 2013

Visualizzare la scheda Sviluppo

Per prima cosa, dobbiamo scoprire la scheda Sviluppo, click destro su qualsiasi punto del menu, scegliete la voce personalizza barra multifunzione

excel personalizza barra multifunzione

Flaggate la voce Sviluppo e confermate clickando su OK

mostra scheda sviluppo

Se si vuole attivare la scheda sviluppo e procedere anche nelle versioni 2007 e 2010, leggete il seguente articolo:

Excel - Visualizza Scheda Sviluppo

Primi passi in VBA

Una volta visualizzata, nella scheda Sviluppo cliccate su Visual Basic

scheda sviluppo visualbasic

Ora nell’ambiente di lavoro Visual Basic, cliccate da menu Inserisci > Modulo.

Digitate: Sub prova e premete INVIO.

Questo è il risultato: 

excel vba macro prova

Cosa significa? In sostanza avete creato una macro che si chiama prova e End Sub significa fine della macro.

NB: i nomi NON possono contenere spazi, per digitare una macro con più parole dovete aggiungere il simbolo underscore _ (sottolineato), esempio: Sub formatta_il_testo()

Digitate ora tra Sub ed End Sub: InputBox ("come ti chiami?")

Premete ora F5 della tastiera e cliccate su Esegui
Oppure premete il tasto verde

excel vba macro inputbox

Se il cursore è all’interno della macro non servirà cliccare su Esegui.
Bene! Avete fatto la vostra prima riga di programma!!!

Ovviamente anche se digitate il vostro nome, il programma non farà nulla, il programma non sa che farsene del vostro nome, non sa cos’è e come utilizzarlo.
A questo punto dobbiamo essere ancora noi a dire cosa farne.

Ad esempio vogliamo che nella prima cella in alto a sinistra compaia il nostro nome:

Range("A1") = InputBox("come ti chiami?")
Facendo così nella prima cella ora apparirà il nostro nome…fantastico no?

Range, Cells e InputBox

Ma cosa significa la parola Range?

Range seguito da una parantesi e in questo caso A1, sta a indicare che è nella cella A1 (colonna A e riga 1) che inserirò il valore che digiterò.
Mentre InputBox è il metodo che usiamo per digitare del testo o dei valori da finestra di dialogo.

Range si usa quando devo selezionare anche una cella, ad esempio digitiamo al di sotto del codice fatto questo altro pezzo di codice:

Range("D5").select
Avviando il programma noterete che è stata selezionata la cella D5

In alternativa possiamo usare il metodo Cells:

Cells(1,1)= InputBox("come ti chiami?")
Così facendo otterremo lo stesso risultato, ovvero il valore digitato nella finestra di dialogo comparirà nella cella A1.

Quali dei due usare?

Dipende; Normalmente il primo metodo si usa per lo più per indicare un riferimento assoluto(ovvero, mi riferisco esattamente a quella cella), e comunque è anche più comprensibile, in quanto se dobbiamo selezionare una cella ad esempio D20, con il metodo Range ci è più facile.

Mentre con il metodo Cells, per fare riferimento alla cella D20, dovremmo digitare Cells(20, 4). Dove la prima cifra sta ad indicare il numero di riga, mentre il secondo valore determina il numero di colonna (che essendo la lettera D corrisponde a 4).

Cells è consigliato usarlo laddove dobbiamo inserire dei dati in sequenza, prelevandoli da altre celle. Lavorare con i numeri è più facile che lavorare con le lettere quando si scrive del codice in VBA. Ad esempio se voglio creare un ciclo che preleva dei dati, userò degli operatori matematici che aumentino costantemente il valore della cella in cui inserire il dato.

Ora, per capire meglio la differenza tra Cells e Range, applichiamo le conoscenze finora apprese e:

Creiamo una semplice Agenda telefonica

Per creare un agenda telefonica, partendo dalla riga 1 che sarà di intestazione, scriverò nella colonna A il nome, nella colonna B il cognome, nella colonna C il telefono.

Ora come posso dire a Excel attraverso VBA che il valore imputato va nella colonna A, B e C?
Non basterà digitare così:

Range("A2") = InputBox("Digita Nome")
Range("B2") = InputBox("Digita Cognome")
Range("C2") = InputBox("Digita Telefono")
Se poi rilanciamo il programma che cosa succederà? Excel andrà a sostituire il testo inserito nella cella A2,B2,C2 (ovviamente in A1,B1,C1 abbiamo digitato NOME, COGNOME, TELEFONO)

Per evitare che vengano sempre sovrascritti i dati nella riga 2, dobbiamo creare questo codice:

nrighe = Range("A:A").End(xlUp).Row +1
Il codice, indica quanti valori (o righe occupate) vi sono nella Colonna A. L'aggiunta di +1 in fondo all'istruzione, sposta la selezione alla riga successiva, in una cella vuota.
Nel caso ho solo i le intestazioni (NOME, COGNOME, TELEFONO), il valore nrighe sarà 2, se ho inserito già dei dati sarà 3 e avanti così.

Con questa semplice riga di codice, eviteremo così di sovrascrivere dei valori già inseriti.

Ora diventerà utile applicare il metodo Cells al posto del metodo Range:
Il codice cambierà così:

Cells(nrighe,1) = InputBox("Digita Nome")
Cells(nrighe,2) = InputBox("Digita Cognome")
Cells(nrighe,3) = InputBox("Digita Telefono")

In questa maniera, il codice diventa più semplice da gestire:
Usare il metodo Range in questo caso diventerebbe più laborioso. Se avessimo continutato ad usarlo, avremmo dovuto scrivere: Range(“A” & nrighe), dove & serve per congiungere due o più cose insieme.

Cells, diventa ancora più potente se devo copiare dei valori e inserirli in altre celle... laughing
Per ora fermiamoci qui con il VBA!

Digitiamo così il codice:

nrighe = Range("A:A").End(xlUp).Row +1
Cells(nrighe,1) = InputBox("Digita Nome")
Cells(nrighe,2) = InputBox("Digita Cognome")
Cells(nrighe,3) = InputBox("Digita Telefono")

Per completare l'esercizio: 

  • Torniamo al foglio di lavoro
  • Andiamo nella scheda Inserisci > Forme e scegliamo da Rettangoli, Rettangolo arrotondato.
  • Creiamo un piccolo rettangolo
  • Click destro sullo stesso e scegliamo la voce Modifica Testo.
  • Ora digitiamo AGGIUNGI DATI, formattazione testo e paragrafo a piacimento.
  • Di nuovo, sul rettangolo, click destro > Assegna Macro, e selezioniamo la macro prova appena sviluppata e confermiamo.
  • Ora premete sul tasto e inserite alcuni dati!

Bene abbiamo appena creato una piccola Agenda. wink

Nel prossimo articolo, spiegherò come eliminare, rinominare e cercare un dato...

Andrea Guerri


A chi fosse interessato, sono disponibile per lezioni private online o direttamente a casa (in provincia di Trento).

Contattami


Se hai gradito l'articolo, condividilo, basta un click!

Aggiungi commento


Codice di sicurezza
Aggiorna

  • logo prontopro
  • logo boutique serramento
  • koilab japan and tropical fish farm
  • Trasloco economico - gruppo Arco Traslochi
  • logo flash pulizie
  • logo revolution
  • logo planetkoi small
  • logo finiture
  • ick logo template
  • montaggio mobili trento

Realizzato da: Daniele Gagliardi
Viale Monache 3 - 38062 Arco - TN
- Contattami -

Per essere più facile ed intuitivo, il blog fa uso dei cookie, piccole porzioni di dati che consentono di capire come gli utenti navighino e ne visualizzino le pagine. I cookie non registrano alcuna informazione personale sull'utente ed eventuali dati identificabili non verranno memorizzati.