Variabili รจ custanti in VBA

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 SizeDescriptionRange di valori
Byte1 bytesinteri pusitivi; spessu usatu per dati binarida 0 ร  255
Booleanu2 bytesPรฒ esse veru o falsuVera o Falsa
Integer2 bytesNumeri sani (senza parte fraccionaria)da -32 ร  +768
Long4 bytesNumeri interi grandi (senza parte fraccionaria)ะพั‚ -2 147 483 648 ะดะพ +2 147 483 647
sรฌngulu4 bytesNumeru in virgule flottante di precisione unicuda -3.4e38 ร  +3.4e38
doppia8 bytesDoppiu numeru di virgule flottante di precisioneda -1.8e308 ร  +1.8e308
Currency8 bytesNumeru in virgule flottante, cรน un numeru fissu di decimaliะพั‚ -922 337 203 685 477.5808 ะดะพ +922 337 203 685 477.5807
Date8 bytesData รจ 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
Objettivu4 bytesRiferenza di l'ughjettuOgni riferimentu d'ughjettu
Stringhรจ cambiatuSet di caratteri. U tipu String pรฒ esse di lunghezza fissa o variabile. Hรจ piรน comunmente utilizatu cรน una lunghezza variabileLunghezza fissa - finu ร  circa 65 caratteri. Lunghezza variabile - finu ร  circa 500 miliardi di caratteri
variantihรจ cambiatuPรฒ 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:

  1. 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.
  2. 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.
  3. 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.

Lascia un Audiolibro