Variabili e costanti in VBA

In VBA, come in qualsiasi altro linguaggio di programmazione, le variabili e le costanti vengono utilizzate per memorizzare qualsiasi valore. Come suggerisce il nome, le variabili possono cambiare, mentre le costanti memorizzano valori fissi.

Ad esempio, una costante Pi memorizza il valore 3,14159265… Il numero “Pi” non cambierà durante l'esecuzione del programma, ma è comunque più conveniente memorizzare tale valore come costante.

Allo stesso tempo, possiamo usare la variabile sVAT_Tariffa per memorizzare l'aliquota IVA sui beni acquistati. Valore variabile sVAT_Tariffa può variare a seconda del prodotto acquistato.

Tipi di dati

Tutte le variabili e le costanti sono di un particolare tipo di dati. La tabella seguente elenca i tipi di dati utilizzati in VBA con una descrizione e un intervallo di valori possibili:

Tipo di dati TagliaDescrizioneGamma di valori
Byte1 byteInteri positivi; spesso utilizzato per i dati binarida 0 a 255
Booleano2 bytePuò essere Vero o FalsoVero o falso
Numero intero2 byteNumeri interi (nessuna parte frazionaria)da -32 a +768
Lunghi4 byteNumeri interi grandi (nessuna parte frazionaria)от -2 147 483 648 до +2 147 483 647
singolo4 byteNumero in virgola mobile a precisione singolada -3.4e38 a +3.4e38
Doppio8 byteNumero in virgola mobile a doppia precisioneda -1.8e308 a +1.8e308
Valuta8 byteNumero a virgola mobile, con un numero fisso di cifre decimaliот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
Data8 byteData e ora: i dati di tipo Data sono rappresentati da un numero in virgola mobile. La parte intera di questo numero esprime la data e la parte frazionaria esprime l'ora.dal 1 gennaio 100 al 31 dicembre 9999
Oggetto4 byteRiferimento oggettoQualsiasi riferimento all'oggetto
Cordasta cambiandoSet di caratteri. Il tipo String può essere di lunghezza fissa o variabile. Più comunemente usato con lunghezza variabileLunghezza fissa: fino a circa 65 caratteri. Lunghezza variabile: fino a circa 500 miliardi di caratteri
Variantesta cambiandoPuò contenere una data, un float o una stringa di caratteri. Questo tipo viene utilizzato nei casi in cui non sia noto in anticipo quale tipo di dati verranno inseriti.Numero – Doppio, stringa – Stringa

Ovviamente, utilizzando la tabella sopra e scegliendo il tipo di dati corretto, puoi utilizzare la memoria in modo più economico (scegli ad esempio il tipo di dati Numero intero invece Lunghi or singolo invece Doppio). Tuttavia, quando si utilizzano tipi di dati più compatti, è necessario fare attenzione che il codice non tenti di adattarvi valori sproporzionatamente grandi.

Dichiarazione di variabili e costanti

Nota del traduttore: Parlando di variabili in VBA, vale la pena menzionare un altro punto molto importante. Se dichiariamo una variabile ma non le assegniamo alcun valore, viene inizializzata con un valore predefinito:

• le stringhe di testo vengono inizializzate con stringhe vuote;

• numeri — valore 0;

• digitare le variabili Booleano — Falso;

• date – 30 dicembre 1899.

Prima di poter utilizzare una variabile o una costante, è necessario dichiararla. Per fare ciò, aggiungi la seguente semplice riga di codice alla macro:

Dim Имя_Переменной As Тип_Данных

Nella riga di codice sopra Nome_variabile è il nome della variabile che verrà utilizzata nel codice, e Tipo di dati è uno dei tipi di dati della tabella fornita un po' prima in questo articolo. Per esempio:

Dim sVAT_Rate As Single Dim i As Integer

Le costanti vengono dichiarate in modo simile, ma quando si dichiarano costanti, il loro valore deve essere immediatamente indicato. Ad esempio, in questo modo:

Cost iMaxCount = 5000 Cost iMaxScore = 100

Non è necessario dichiarare variabili in Excel. Per impostazione predefinita, tutte le variabili immesse ma non dichiarate in Excel avranno il tipo Variante e sarà in grado di accettare sia valori numerici che di testo.

Pertanto, il programmatore può utilizzare la nuova variabile in qualsiasi momento (anche se non è stata dichiarata) ed Excel la tratterà come una variabile di tipo Variante. Tuttavia, ci sono diversi motivi per cui questo non dovrebbe essere fatto:

  1. Utilizzo della memoria e velocità di calcolo. Se non si dichiara una variabile con un'indicazione del tipo di dati, per impostazione predefinita verrà impostata sul tipo Variante. Questo tipo di dati utilizza più memoria rispetto ad altri tipi di dati. Alcuni byte in più per variabile potrebbero non sembrare molto, ma in pratica i programmi possono avere migliaia di variabili (soprattutto quando si lavora con gli array). Pertanto, la memoria extra utilizzata da variabili come Variante, rispetto a variabili di tipo Numero intero or singolo, può aggiungere fino a un importo significativo. Inoltre, operazioni con variabili di tipo Variante vengono eseguiti molto più lentamente rispetto a variabili di altro tipo, rispettivamente un migliaio di variabili in più di tipo Variante può rallentare notevolmente i calcoli.
  2. Prevenzione degli errori di battitura nei nomi delle variabili. Se tutte le variabili sono dichiarate, è possibile utilizzare l'istruzione VBA − Opzione esplicita (ne parleremo più avanti) in modo da identificare tutte le variabili non dichiarate. Ciò elimina la comparsa di un errore nel programma a causa di un nome di variabile scritto in modo errato. Ad esempio, utilizzando una variabile denominata sVAT_Tariffa, puoi fare un errore di battitura e, assegnando un valore a questa variabile, scrivere: “VATRate = 0,175”. Si prevede che d'ora in poi, la variabile sVAT_Tariffa dovrebbe contenere il valore 0,175 – ma ovviamente non è così. Se è abilitata la modalità di dichiarazione obbligatoria di tutte le variabili utilizzate, il compilatore VBA indicherà immediatamente un errore, poiché non troverà la variabile aliquota IVA tra quelli annunciati.
  3. Evidenziando i valori che non corrispondono al tipo dichiarato di una variabile. Se dichiari una variabile di un certo tipo e provi ad assegnarle dati di un tipo diverso, otterrai un errore che, se non corretto, può causare il crash del programma. A prima vista, questo può sembrare un buon motivo per non dichiarare variabili, ma in realtà, rispetto a prima, risulta che una delle variabili ha ricevuto i dati sbagliati che avrebbe dovuto ricevere – tanto meglio! In caso contrario, se il programma continua a funzionare, i risultati potrebbero essere errati e imprevisti e sarà molto più difficile trovare la causa degli errori. È anche possibile che la macro venga eseguita "con successo". Di conseguenza, l'errore passerà inosservato e il lavoro continuerà con dati errati!

A questo proposito, è opportuno rilevare un tipo di dati errato e correggere tali errori nel codice il prima possibile. Per questi motivi, si consiglia di dichiarare tutte le variabili durante la scrittura di una macro VBA.

Opzione esplicita

Operatore Opzione esplicita fa sì che tutte le variabili che verranno utilizzate nel codice VBA vengano dichiarate e contrassegna tutte le variabili non dichiarate come errori durante la compilazione (prima che inizi l'esecuzione del codice). Applicare questo operatore non è difficile: basta scrivere questa riga nella parte superiore del file VBA:

Option Explicit

Se vuoi inserire sempre Opzione esplicita all'inizio di ogni nuovo modulo VBA creato, questo può essere fatto automaticamente. Per fare ciò, è necessario abilitare l'opzione Richiedi dichiarazione di variabile nelle impostazioni dell'editor VBA.

Questo è fatto in questo modo:

  • Dal menu di Visual Basic Editor, fare clic su strumenti > Opzioni
  • Nella finestra di dialogo che appare, apri la scheda editore
  • Selezionare la casella Richiedi dichiarazione di variabile e premere OK

Quando abilitato, la stringa Opzione esplicita verrà inserito automaticamente all'inizio di ogni nuovo modulo creato.

Ambito di variabili e costanti

Ogni variabile o costante dichiarata ha il proprio ambito limitato, ovvero una parte limitata del programma in cui esiste questa variabile. L'ambito dipende da dove è stata effettuata la dichiarazione della variabile o della costante. Prendi, ad esempio, la variabile sVAT_Tariffa, che viene utilizzato nella funzione Costo totale. La tabella seguente illustra due opzioni per l'ambito delle variabili sVAT_Tariffadichiarato in due diverse posizioni nel modulo:

Opzione Esplicito Dim sVAT_Rate As singola funzione Total_Cost() As Double ... Funzione finale
Se la variabile sVAT_Tariffa dichiarato all'inizio del modulo, l'ambito di questa variabile sarà l'intero modulo (cioè la variabile sVAT_Tariffa saranno riconosciuti da tutte le procedure di questo modulo).

Pertanto, se nella funzione Costo totale variabile sVAT_Tariffa verrà assegnato un valore, quindi la funzione successiva eseguita all'interno dello stesso modulo utilizzerà la variabile sVAT_Tariffa con lo stesso significato.

Tuttavia, se viene chiamata una funzione che si trova in un altro modulo, allora per essa la variabile sVAT_Tariffa non sarà conosciuto.

Opzione Funzione esplicita Total_Cost() As Double Dim sVAT_Rate As Single ... Funzione finale
Se la variabile sVAT_Tariffa dichiarato all'inizio della funzione Costo totale, il suo ambito sarà limitato solo a questa funzione (cioè all'interno della funzione Costo totale, puoi usare la variabile sVAT_Tariffa, ma non all'esterno).

Quando si tenta di utilizzare sVAT_Tariffa in un'altra procedura, il compilatore VBA segnalerà un errore perché questa variabile non è stata dichiarata all'esterno della funzione Costo totale (a condizione che venga utilizzato l'operatore Opzione esplicita).

Nell'esempio mostrato sopra, la variabile è dichiarata a livello di modulo con la parola chiave Fioco. Tuttavia, potrebbe essere necessario che le variabili dichiarate possano essere utilizzate in altri moduli. In questi casi, per dichiarare una variabile invece di una parola chiave Fioco è necessario utilizzare la parola chiave Pubblico.

A proposito, per dichiarare una variabile a livello di modulo, invece della parola chiave Fioco è possibile utilizzare la parola chiave Privata, che indica che questa variabile deve essere utilizzata solo nel modulo corrente.

Puoi anche usare le parole chiave per dichiarare le costanti. Pubblico и Privata, ma non al posto della parola chiave const, insieme ad esso.

Gli esempi seguenti mostrano l'uso delle parole chiave Pubblico и Privata applicato a variabili e costanti.

Opzione Pubblico esplicito sVAT_Rate As Single Public Const iMax_Count = 5000 ...    
In questo esempio, la parola chiave Pubblico usato per dichiarare una variabile sVAT_Tariffa e costanti Conte_iMax. L'ambito degli elementi dichiarati in questo modo sarà l'intero progetto attuale.

Ciò significa che sVAT_Tariffa и Conte_iMax sarà disponibile in qualsiasi modulo di progetto.

Opzione esplicito Private sVAT_Rate As Single Private Const iMax_Count = 5000 ...    
In questo esempio, per dichiarare una variabile sVAT_Tariffa e costanti Conte_iMax parola chiave utilizzata Privata. Lo scopo di questi elementi è il modulo corrente.

Ciò significa che sVAT_Tariffa и Conte_iMax sarà disponibile in tutte le procedure del modulo corrente, ma non sarà disponibile per le procedure in altri moduli.

Lascia un Commento