Discussione: Corso VBA
Visualizza messaggio singolo
Vecchio 29-03-2016, 22.02.11   #83
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
Alexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tutti
#3

Routine e Function in VBA




Le Subroutine
Una Sub è un componente essenziale del linguaggio VBA ed è definita come un insieme di codici che permettono di eseguire un'azione, ciò significa che VBA esegue le loro istruzioni. Una Sub inizia con la dichiarazione della parola chiave Sub, seguita da un nome e poi seguita da una serie di parentesi e si conclude con una dichiarazione End Sub che può essere digitato, ma appare automaticamente dopo aver digitato il nome della procedura seguito dalla pressione del tasto Invio per andare alla riga successiva. Il codice VBA o le dichiarazioni sono inseriti in mezzo tra le due dichiarazioni
Codice:
Sub Anagrafica()
  altro Codice ………..
  End Sub
Quando viene assegnato il nome della Sub si deve tenere presente quanto segue:
  • Il nome deve iniziare con una lettera e non può contenere spazi.
  • Nonostante quanto sopra, gli altri caratteri possono essere lettere, numeri o determinati (ma non tutti) caratteri di punteggiatura. Ad esempio, non è possibile utilizzare i seguenti caratteri: #, $,%, &, @, ^, * e!.
  • Periodi (.) e spazi () non sono ammessi.
  • Il nome deve essere univoco nella cartella di lavoro corrente.
  • Il nome non può essere una parola riservata in VBA.
  • Non c'è alcuna distinzione tra lettere maiuscole e minuscole. In altre parole, "A" è uguale a "a".
  • Il numero massimo di caratteri che un nome può avere è 255.

Si consiglia inoltre di assegnare un nome descrittivo alla Sub che rispecchi quello che fa il codice in esso contenuto

Quando si crea una procedura Sub, si ha la possibilità di determinare quali altre procedure sono in grado di richiamarla. Questo viene fatto attraverso l'uso delle parole chiave Pubblic o Private che sono uno degli elementi facoltativi delle procedure Sub. Tuttavia, diamo un'occhiata più approfondita a quale sia il significato di queste procedure e come è possibile determinare se una particolare procedura è pubblica o privata.
I termini VBA Private e Pubblic dichiarano l'accesso consentito al termine a cui è associato:

Private Sub: ha impostati i permessi in modo che le Sub nei moduli esterni non possano chiamare questa particolare subroutine, ciò significa che una Sub nel modulo 1 non può utilizzare richiamare una Sub private nel modulo 2. (Nota: se si avvia a livello di applicazione, è possibile utilizzare Esegui per sovrascrivere questa regola e accedere a una Sub private).

Public Sub: questa Sub può essere richiamata o attivata da altre Sub in moduli diversi ed è l'impostazione predefinita per tutte le Sub quindi non è necessario aggiungerlo prima della parola "sub", tuttavia, fornisce ulteriore chiarezza ad altri che potrebbero leggere il codice. Come preferenza personale non scrivo Public Sub a meno che non stia creando un programma complesso che contiene un certo numero di subroutine con vari ambiti (es. Ho un mix di Sub pubblic e private).

Come abbiamo detto le procedure sono un gruppo di istruzioni eseguite nel loro insieme, che istruiscono Excel su come eseguire un compito specifico e l'attività eseguita può essere molto semplice o molto complicata. Tuttavia, è una buona pratica spezzare le procedure complicate in procedure più piccole.


I due principali tipi di procedure sono Sub e Function e la principale differenza tra queste due procedure è la seguente:

• Le procedure Sub eseguono un'azione con Excel, in altre parole, quando si esegue una procedura Sub, Excel esegue qualcosa. Ciò che accade in Excel dipende da ciò che dice il particolare codice VBA.
• Le procedure di funzione eseguono calcoli e restituiscono un valore che può essere un singolo valore o un array.

Una funzione è molto simile a una sub, la principale differenza è che una funzione può restituire un valore, mentre una sub non può. Ci sono altre differenze che vedremo ma questa è la principale. Normalmente si crea una funzione quando si desidera restituire un valore.


Come eseguire una routine
Ci sono molti modi per eseguire una macro, possiamo utilizzare la finestra di dialogo macro, o il tasto di scelta rapida, o in VBE o assegnando la macro a un oggetto. La finestra di dialogo macro è raggiungibile dalla scheda Visualizza della barra multifunzione, cliccando su macro e poi su Visualizza macro che aprirà la finestra di dialogo macro, in cui si deve selezionare il nome della macro e cliccare sul pulsante Esegui per eseguire la Sub/macro.

Fig. 1

Fig. 2

È inoltre possibile aprire la finestra di dialogo macro facendo clic su Macro nel gruppo Codice della scheda Sviluppo sulla barra multifunzione e scegliere Visual Basic Editor

Fig. 3

• In Visual Basic Editor, si deve fare clic all'interno della sub e premere F5 (o fare clic su Esegui nella barra dei menu e quindi fare clic su Esegui Sub/UserForm .
• Oppure, sempre in Visual Basic Editor, si deve fare clic su Strumenti nella barra dei menu, quindi fare clic su macro che apre la finestra di dialogo Macro. Nella finestra di dialogo Macro, selezionare il nome della macro e fare clic su Esegui per eseguire la macro.

Fig. 4

Un buon modo per eseguire una routine (o macro) potrebbe essere quella di fare clic su un pulsante accompagnato da un testo esplicativo posto sul foglio di lavoro, per questo è necessario assegnare la macro a un oggetto, forma, grafico o controllo. È possibile assegnare una macro a qualsiasi controllo agendo dalla scheda Sviluppo sulla barra multifunzione, cliccando su Inserisci nel gruppo Controlli, selezionare e fare clic sul pulsante nei controlli modulo e quindi fare clic sul foglio di lavoro in cui si desidera posizionarlo nell'angolo superiore sinistro del pulsante (è possibile spostare e ridimensionare in seguito).

Fig. 5

Successivamente cliccando col destro del mouse sul pulsante e dal menu a discesa che compare selezionare Assegna macro e si apre la finestra di dialogo Assegna macro dal quale è possibile selezionare e assegnare una macro all'oggetto disegnato.

Fig. 6

E’ possibile assegnare macro a qualsiasi oggetto, forma, immagine, grafico etc. inserito nel foglio di lavoro. Nella scheda Inserisci della barra multifunzione, è possibile inserire un oggetto, forma, immagine, elemento grafico, Tabella, Casella di testo, WordArt, etc. nel foglio di lavoro.


Commento del codice in VBA
All'interno di una procedura, durante la scrittura di codice è possibile contemporaneamente fornire commenti per spiegare lo scopo e ciò che il codice sta facendo. Per differenziare i commenti con il codice, dovete inserire un singolo carattere di apostrofo (') o con la dicitura Rem seguito da uno spazio. I commenti verranno ignorati da VBA in modo che un errore di sintassi nel commento non viene restituito. Si consiglia di utilizzare i commenti nel codice che saranno di grande aiuto a un altro utente nella comprensione, o se si deve effettuare una modifica in un secondo momento. Una volta che si aggiunge un carattere di commento (') all'inizio di una riga è possibile utilizzare la sequenza di continuazione (_) per continuare il commento alla riga successiva e quando si preme il tasto Invio dopo aver digitato un commento, il suo colore diventa verde, come da impostazione predefinita di VBA.

Questa impostazione predefinita del colore del commento può essere modificato andando in VBE, e seguendo il percorso Strumenti – Opzioni

Fig. 7

Fig. 8

e nella finestra visualizzata selezionare la scheda Formato, selezionare il commento del testo nella casella di riepilogo Colori e quindi scegliere il nuovo colore di primo piano. Si noti che il testo di commento non deve necessariamente iniziare all'inizio di una riga, può essere inserita sul lato destro in una riga di codice, lasciando pochi spazi dopo il codice e quindi digitando un singolo apostrofo seguito da commento.



Proseguimento linea del codice VBA
Molte volte durante la scrittura di codice VBA, una sola riga di codice potrebbe diventare molto lunga e nella finestra del codice sarà necessario scorrere verso il lato destro per leggerlo. Per dividere una singola riga in più righe in VBA, è possibile utilizzare la linea come carattere di continuazione che è la combinazione di uno spazio seguito da un underscore (_), usando questo carattere come una interruzione di linea, vi permetterà di passare alla riga successiva e così via, e questo sarà il trattamento di tutte le linee continue come una singola riga nel codice VBA.

Si noti che si può avere un massimo di 25 linee fisicamente, unite con il carattere di continuazione di riga (cioè un massimo di 24 caratteri di continuazione della riga), e di essere trattate come una singola riga logica di codice. Una linea fisica può avere al massimo 1023 caratteri mentre una linea logica può avere un massimo di 10.230 caratteri, in modo che un massimo di 25 linee fisiche possono essere unite pari ad un massimo di 10.230 caratteri.
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non è collegato   Rispondi citando