In VBA, cum'รจ in ogni altra lingua di prugrammazione, variร bili รจ custanti sรฒ usati per almacenร ogni valore. Cum'รจ u nome implica, i variร bili ponu cambiร , mentri custanti guardanu valori fissi.
Per esempiu, una constante Pi almacenร u valore 3,14159265 ... U numeru "Pi" รนn cambierร micca durante l'esekzione di u prugramma, ma hรจ ancu piรน cunvene per almacenร un tali valore cum'รจ una constante.
ร u listessu tempu, pudemu usร a variabile sVAT_Rate per almacenร a tarifa di IVA nantu ร i beni acquistati. Valore variabile sVAT_Rate pรฒ variร secondu u pruduttu acquistatu.
Tipi di dati
Tutte e variร bili รจ custanti sรฒ di un tipu di dati particulari. A tavula sottu elenca i tipi di dati utilizati in VBA cรน una descrizzione รจ una gamma di valori pussibuli:
Tipu di dati | Size | Description | Range di valori |
---|---|---|---|
Byte | 1 bytes | interi pusitivi; spessu usatu per dati binari | da 0 ร 255 |
Booleanu | 2 bytes | Pรฒ esse veru o falsu | Vera o Falsa |
Integer | 2 bytes | Numeri sani (senza parte fraccionaria) | da -32 ร +768 |
Long | 4 bytes | Numeri interi grandi (senza parte fraccionaria) | ะพั -2 147 483 648 ะดะพ +2 147 483 647 |
sรฌngulu | 4 bytes | Numeru in virgule flottante di precisione unicu | da -3.4e38 ร +3.4e38 |
doppia | 8 bytes | Doppiu numeru di virgule flottante di precisione | da -1.8e308 ร +1.8e308 |
Currency | 8 bytes | Numeru in virgule flottante, cรน un numeru fissu di decimali | ะพั -922 337 203 685 477.5808 ะดะพ +922 337 203 685 477.5807 |
Date | 8 bytes | Data รจ ora - Dati di tipu A data hรจ rapprisintata da un numeru in virgola flottante. A parte entera di stu numeru sprime a data, รจ a parte fraccionaria sprime u tempu. | da u 1 di ghjennaghju di u 100 ร u 31 di dicembre di u 9999 |
Objettivu | 4 bytes | Riferenza di l'ughjettu | Ogni riferimentu d'ughjettu |
String | hรจ cambiatu | Set di caratteri. U tipu String pรฒ esse di lunghezza fissa o variabile. Hรจ piรน comunmente utilizatu cรน una lunghezza variabile | Lunghezza fissa - finu ร circa 65 caratteri. Lunghezza variabile - finu ร circa 500 miliardi di caratteri |
varianti | hรจ cambiatu | Pรฒ cuntene una data, un float, o una stringa di caratteri. Stu tipu hรจ adupratu in i casi induve รนn hรจ micca cunnisciutu in anticipu chรฌ tipu di dati serร inseritu. | Number - Double, string - String |
Ovviamente, usendu a tavula sopra รจ scegliendu u tipu di dati ghjustu, pudete aduprร a memoria piรน economicamente (per esempiu, sceglite u tipu di dati Integer invece Long or sรฌngulu invece doppia). Tuttavia, quandu si usanu tipi di dati piรน compacti, avete bisognu ร esse attentu ร chรฌ u vostru codice รนn prova micca di mette in elli valori sproporzionatamente grandi.
Dichjarร Variabili รจ Custanti
Nota di u traduttore: Parlendu di variabili in VBA, vale a pena menzionate un puntu piรน assai impurtante. Se dichjaremu una variabile, ma รนn l'assignemu micca valore, allora hรจ inizializatu cรน un valore predeterminatu:
โข strings di testu sรฒ inizializzati cรน strings vacanti;
โข numeri - valore 0;
โข variร bbili tipu Booleanu - Falsu;
โข date - 30 dicembre 1899.
Prima chรฌ una variabile o una constante pรฒ esse usata, deve esse dichjarata. Per fร questu, aghjunghje a seguente linea simplice di codice ร a macro:
Dim ะะผั_ะะตัะตะผะตะฝะฝะพะน As ะขะธะฟ_ะะฐะฝะฝัั
In a linea di codice sopra Variable_name hรจ u nome di a variร bile chรฌ serร utilizata in u codice, รจ Data_Tipu hรจ unu di i tipi di dati da a tavula datu un pocu prima in stu articulu. Per esempiu:
Dim sVAT_Rate As Single Dim i As Integer
I custanti sรฒ dichjarati in modu simile, ma quandu si dichjaranu custanti, u so valore deve esse immediatamente indicatu. Per esempiu, cusรฌ:
Const iMaxCount = 5000 Const iMaxScore = 100
รn hรจ micca necessariu di dichjarร variร bili in Excel. Per automaticamente, tutte e variabili inserite ma micca dichjarate in Excel avarร u tipu varianti รจ sarร capaci di accettร tramindui valori numerichi รจ testu.
Cusรฌ, u programatore pรฒ aduprร a nova variabile in ogni mumentu (ancu s'ellu รนn hรจ micca statu dichjaratu), รจ Excel u trattarร cum'รจ una variabile di tipu. varianti. Tuttavia, ci sรฒ parechje ragioni per quessa รนn deve micca esse fattu:
- Usu di memoria รจ velocitร di computazione. Se รนn dichjarete micca una variabile cรน una indicazione di u tipu di dati, allora per automaticamente serร stabilitu ร u tipu. varianti. Stu tipu di dati usa piรน memoria chรจ altri tipi di dati. Uni pochi bytes extra per variabile รนn pรฒ micca sona assai, ma in pratica, i prugrammi ponu avรจ millaie di variร bili (in particulare quandu travaglianu cรน arrays). Dunque, a memoria extra utilizata da variร bili cum'รจ varianti, paragunatu ร variร bbili di tipu Integer or sรฌngulu, pรฒ aghjunghje ร una quantitร significativa. Inoltre, operazioni cรน variร bili di tipu varianti sรฒ eseguiti assai piรน lentamente chรจ cรน variร bili d'altri tipi, rispettivamente, un milla variร bili extra di tipu varianti pรฒ rallentร significativamente i calculi.
- Prevenzione di typos in nomi variabili. Se tutte e variร bili sรฒ dichjarate, allora a dichjarazione VBA pรฒ esse usata - Opzione esplicita (ne parleremu piรน tardi) per identificร tutte e variร bili micca dichjarate. Questu elimina l'apparizione di un errore in u prugramma com'รจ u risultatu di un nome di variabile scritta incorrectamente. Per esempiu, utilizendu una variabile chjamata sVAT_Rate, pudete fร un typo รจ, assignendu un valore ร sta variabile, scrivite: "VATRate = 0,175". Hรจ previstu chรฌ da avร , a variร bile sVAT_Rate duverebbe cuntene u valore 0,175 - ma di sicuru รนn hรจ micca. Se u modu di dichjarazione obbligatoria di tutte e variร bili usate hรจ attivatu, u compilatore VBA indicร immediatamente un errore, postu chรฌ รนn truvร micca a variร bile. VATTate trร quelli annunziati.
- Evidenziร i valori chรฌ รนn currispondenu micca ร u tipu dichjarata di una variabile. Se dichjarate una variร bile di un certu tipu รจ pruvate d'assignร dati di un tipu diversu ร questu, avete da ottene un errore, chรฌ, s'ellu รนn hรจ micca currettu, pรฒ causร u prugramma ร crash. ร u primu sguardu, questu pรฒ esse una bona ragiuni per รนn dichjarร variร bili, ma in fattu, piรน di prima, si scopre chรฌ una di e variร bili hร ricivutu i dati sbagliati chรฌ duverebbe riceve - tantu megliu! Altrimenti, se u prugramma cuntinueghja ร eseguisce, i risultati ponu esse sbagliati รจ imprevisu, รจ serร assai piรน difficiuli di truvร a causa di l'errore. Hรจ ancu pussibule chรฌ a macro sarร eseguita "successu". In u risultatu, l'errore passerร inosservatu รจ u travagliu continuarร cรน dati sbagliati!
In questu sensu, hรจ desideratu per detectร un tipu di dati incorrectu รจ corregge tali errori in u codice u piรน prestu pussibule. Per questi mutivi, hรจ cunsigliatu di dichjarร tutte e variร bili quandu scrivite una macro VBA.
Opzione esplicita
Operator Opzione esplicita face chรฌ tutte e variร bili chรฌ seranu aduprate in u codice VBA per esse dichjarate, รจ marca tutte e variร bili micca dichjarate cum'รจ errori durante a compilazione (prima chรฌ l'esekzione di codice principia). Applicร stu operatore รนn hรจ micca difficiule - basta ร scrive sta linea ร a cima di u schedariu VBA:
Option Explicit
Se vulete inserisce sempre Opzione esplicita ร a cima di ogni novu modulu VBA creatu, questu pรฒ esse fattu automaticamente. Per fร questu, avete bisognu di attivร l'opzione Richiede una Dichjarazione Variabile in i parร metri di l'editore VBA.
Questu hรจ fattu cusรฌ:
- Da u menรน di Visual Basic Editor, cliccate attrezzi > options
- In u dialogu chรฌ appare, apre a tabulazione Scrittori
- Verificate a casella Richiede una Dichjarazione Variabile ร stampa OK
Quandu hรจ attivatu, a stringa Opzione esplicita serร inseritu automaticamente ร u principiu di ogni novu modulu creatu.
Scopu di Variabili รจ Custanti
Ogni variabile dichjarata o custante hร u so propiu scopu limitatu, vale ร dรฌ, una parte limitata di u prugramma in quale sta variabile esiste. U scopu dipende da induve a dichjarazione di a variร bile o constante hรจ stata fatta. Pigliate, per esempiu, a variabile sVAT_Rate, chรฌ hรจ utilizatu in a funzione Costu_Totale. A tavula seguente discute duie opzioni per u scopu variabile sVAT_Ratedichjaratu in duie pusizioni diffirenti in u modulu:
Option Explicit Dim sVAT_Rate As Single Function Total_Cost() As Double ... End Function | Se a variabile sVAT_Rate dichjarata ร u principiu di u modulu, allora u scopu di sta variabile serร u modulu sanu (vale ร dรฌ a variร bile sVAT_Rate serร ricunnisciutu da tutte e prucedure in stu modulu). Dunque, se in a funzione Costu_Totale variabile sVAT_Rate serร attribuitu qualchรฌ valore, allora a funzione successiva eseguita in u stessu modulu utilizerร a variร bile sVAT_Rate cรน u listessu significatu. In ogni casu, se una funzione situata in un altru modulu hรจ chjamata, allora per questu a variร bile sVAT_Rate รนn sarร micca cunnisciutu. |
Opzione Funzione esplicita Total_Cost() As Double Dim sVAT_Rate As Single ... End Function | Se a variabile sVAT_Rate dichjaratu ร u principiu di a funzione Costu_Totale, allura u so scopu serร limitatu solu ร sta funzione (vale ร dรฌ in a funzione Costu_Totale, pudete aduprร a variabile sVAT_Rate, ma micca fora). Quandu pruvate d'utilizร sVAT_Rate in una altra prucedura, u compilatore VBA hร da rapportร un errore perchรจ sta variร bile รนn hรจ micca stata dichjarata fora di a funzione Costu_Totale (a condizione chรฌ l'operatore hรจ adupratu Opzione esplicita). |
In l'esempiu mostratu sopra, a variร bile hรจ dichjarata ร u livellu di u modulu cรน a keyword Dim. Tuttavia, pรฒ esse necessariu chรฌ e variabili dichjarate ponu esse aduprate in altri moduli. In tali casi, per dichjarร una variabile invece di una keyword Dim keyword deve esse usata Public.
In modu, per dichjarร una variabile ร u livellu di u modulu, invece di a chjave Dim keyword pรฒ esse usata Private, chรฌ indica chรฌ sta variabile hรจ destinata ร aduprร solu in u modulu attuale.
Pudete ancu aduprร parole chjave per dichjarร custanti. Public ะธ Private, ma micca invece di a chjave Custanza, cun ellu.
L'esempii seguenti mostranu l'usu di e parolle chjave Public ะธ Private applicata ร variabili รจ custanti.
Opzione Explicit Public sVAT_Rate As Single Public Const iMax_Count = 5000 ... | In questu esempiu, a keyword Public usatu per dichjarร una variabile sVAT_Rate e custanti iMax_Count. U scopu di elementi dichjarati in questu modu serร tuttu u prughjettu attuale. Questu significa questu sVAT_Rate ะธ iMax_Count serร dispunibule in ogni modulu di prughjettu. |
Opzione Explicit Private sVAT_Rate As Single Private Const iMax_Count = 5000 ... | In questu esempiu, per dichjarร una variabile sVAT_Rate e custanti iMax_Count keyword usata Private. U scopu di sti elementi hรจ u modulu attuale. Questu significa questu sVAT_Rate ะธ iMax_Count serร dispunibule in tutte e prucedure di u modulu attuale, ma รนn serร micca dispunibule per e prucedure in altri moduli. |