Mainīgie un konstantes VBA

VBA, tāpat kā jebkurā citā programmēšanas valodā, jebkuru vērtību saglabāšanai tiek izmantoti mainīgie un konstantes. Kā norāda nosaukums, mainīgie var mainīties, savukārt konstantes saglabā fiksētas vērtības.

Piemēram, konstante Pi saglabā vērtību 3,14159265... Programmas izpildes laikā skaitlis “Pi” nemainīsies, taču tomēr ērtāk šādu vērtību saglabāt kā konstanti.

Tajā pašā laikā mēs varam izmantot mainīgo sPVN_likme uzglabāt PVN likmi iegādātajām precēm. Mainīga vērtība sPVN_likme var atšķirties atkarībā no iegādātā produkta.

Datu tipi

Visi mainīgie un konstantes ir noteikta datu tipa. Tālāk esošajā tabulā ir norādīti VBA izmantotie datu tipi ar aprakstu un iespējamo vērtību diapazonu.

Datu tips IzmēriAprakstsVērtību diapazons
Baits1 baitiPozitīvi veseli skaitļi; bieži izmanto binārajiem datiemno 0 līdz 255
Būla2 baitiVar būt patiess vai nepatiessPatiesība vai meli
Vesels skaitlis2 baitiVeseli skaitļi (bez daļdaļas)no -32 līdz +768
Garš4 baitiLieli veseli skaitļi (bez daļdaļas)от -2 147 483 648 до +2 147 483 647
viens4 baitiViena precizitātes peldošā komata skaitlisno -3.4e38 līdz +3.4e38
Dubultosies8 baitiDubults precizitātes peldošā komata skaitlisno -1.8e308 līdz +1.8e308
Valūta8 baitiPeldošā komata skaitlis ar noteiktu zīmju skaitu aiz komataот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
datums8 baitiDatums un laiks – Datuma tipa dati tiek attēloti ar peldošā komata skaitli. Šī skaitļa veselā daļa izsaka datumu, bet daļējā daļa izsaka laiku.no 1.gada 100.janvāra līdz 31.gada 9999.decembrim
Objekts4 baitiObjekta atsauceJebkura objekta atsauce
RindamaināsRakstzīmju kopa. Virknes veids var būt fiksēts vai mainīgs garums. Biežāk izmanto ar mainīgu garumuFiksēts garums – līdz aptuveni 65 rakstzīmēm. Mainīgs garums – līdz aptuveni 500 miljardiem rakstzīmju
variantsmaināsVar saturēt datumu, pludiņu vai rakstzīmju virkni. Šo veidu izmanto gadījumos, kad iepriekš nav zināms, kāda veida dati tiks ievadīti.Skaitlis – dubultā, virkne – virkne

Acīmredzot, izmantojot augstāk esošo tabulu un izvēloties pareizo datu tipu, atmiņu var izmantot ekonomiskāk (piemēram, izvēlēties datu tipu Vesels skaitlis vietā Garš or viens vietā Dubultosies). Tomēr, izmantojot kompaktākus datu tipus, jums ir jābūt uzmanīgiem, lai jūsu kods necenstos tajos ievietot nesamērīgi lielas vērtības.

Mainīgo un konstantu deklarēšana

Tulkotāja piezīme: Runājot par mainīgajiem VBA, ir vērts pieminēt vēl vienu ļoti svarīgu punktu. Ja mēs deklarējam mainīgo, bet nepiešķiram tam nekādu vērtību, tas tiek inicializēts ar noklusējuma vērtību:

• teksta virknes tiek inicializētas ar tukšām virknēm;

• skaitļi — vērtība 0;

• tipa mainīgie Būla — viltus;

• datumi – 30. gada 1899. decembris.

Lai varētu izmantot mainīgo vai konstanti, tas ir jādeklarē. Lai to izdarītu, makro pievienojiet šādu vienkāršu koda rindiņu:

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

Iepriekš minētajā koda rindā Mainīgais_nosaukums ir mainīgā nosaukums, kas tiks izmantots kodā, un Datu tips ir viens no datu veidiem no tabulas, kas sniegta nedaudz iepriekš šajā rakstā. Piemēram:

Dim sVAT_Rate As Single Dim i As Integer

Konstantes deklarē līdzīgi, taču, deklarējot konstantes, nekavējoties jānorāda to vērtība. Piemēram, šādi:

Const iMaxCount = 5000 Const iMaxScore = 100

Nav nepieciešams deklarēt mainīgos programmā Excel. Pēc noklusējuma visiem programmā Excel ievadītajiem, bet nedeklarētajiem mainīgajiem būs veids variants un varēs pieņemt gan ciparu, gan teksta vērtību.

Tādējādi programmētājs var izmantot jauno mainīgo jebkurā laikā (pat ja tas nav deklarēts), un Excel to apstrādās kā mainīgo. variants. Tomēr ir vairāki iemesli, kāpēc to nevajadzētu darīt:

  1. Atmiņas lietojums un skaitļošanas ātrums. Ja nedeklarējat mainīgo ar norādi par datu tipu, pēc noklusējuma tas tiks iestatīts uz tipu variants. Šis datu tips patērē vairāk atmiņas nekā citi datu tipi. Daži papildu baiti katram mainīgajam var neizklausīties daudz, taču praksē programmās var būt tūkstošiem mainīgo (jo īpaši, strādājot ar masīviem). Tāpēc papildu atmiņa, ko izmanto mainīgie, piemēram, variants, salīdzinot ar tipa mainīgajiem Vesels skaitlis or viens, var pievienot ievērojamu summu. Turklāt darbības ar mainīgajiem veida variants tiek izpildīti daudz lēnāk nekā ar cita veida mainīgajiem, attiecīgi papildus tūkstotis tipa mainīgo variants var ievērojami palēnināt aprēķinus.
  2. Pārrakstīšanās kļūdu novēršana mainīgo nosaukumos. Ja visi mainīgie ir deklarēti, tad var izmantot VBA priekšrakstu − Izteikta opcija (par to runāsim vēlāk), lai identificētu visus nedeklarētos mainīgos. Tas novērš kļūdas parādīšanos programmā nepareizi uzrakstīta mainīgā nosaukuma rezultātā. Piemēram, izmantojot mainīgo ar nosaukumu sPVN_likme, varat izdarīt drukas kļūdu un, piešķirot šim mainīgajam vērtību, rakstīt: “VATRate = 0,175”. Paredzams, ka no šī brīža mainīgais sPVN_likme jāietver vērtība 0,175, bet, protams, tā nav. Ja ir iespējots visu izmantoto mainīgo obligātās deklarēšanas režīms, VBA kompilators nekavējoties norādīs kļūdu, jo tas neatradīs mainīgo. VATRAte starp paziņotajiem.
  3. Izceļot vērtības, kas neatbilst deklarētajam mainīgā tipam. Ja jūs deklarējat noteikta veida mainīgo un mēģināt tam piešķirt cita veida datus, jūs saņemsit kļūdu, kas, ja tas netiks izlabots, var izraisīt programmas avāriju. No pirmā acu uzmetiena tas var šķist labs iemesls nedeklarēt mainīgos, taču patiesībā nekā iepriekš izrādās, ka viens no mainīgajiem saņēma nepareizus datus, kas tam bija jāsaņem – jo labāk! Pretējā gadījumā, ja programma turpinās darboties, rezultāti var būt nepareizi un negaidīti, un būs daudz grūtāk atrast kļūdu cēloni. Ir arī iespējams, ka makro tiks “veiksmīgi” izpildīts. Rezultātā kļūda paliks nepamanīta un darbs turpināsies ar nepareiziem datiem!

Šajā sakarā ir vēlams atklāt nepareizu datu tipu un pēc iespējas agrāk izlabot šādas kļūdas kodā. Šo iemeslu dēļ, rakstot VBA makro, ieteicams deklarēt visus mainīgos.

Izteikta opcija

operators Izteikta opcija liek deklarēt visus mainīgos, kas tiks izmantoti VBA kodā, un kompilēšanas laikā (pirms koda izpildes sākuma) atzīmē visus nedeklarētos mainīgos kā kļūdas. Šī operatora lietošana nav grūta – vienkārši ierakstiet šo rindiņu pašā VBA faila augšpusē:

Option Explicit

Ja vēlaties vienmēr ievietot Izteikta opcija uz katra jaunā izveidotā VBA moduļa augšdaļu, to var izdarīt automātiski. Lai to izdarītu, jums ir jāiespējo šī opcija Nepieciešama mainīgā deklarācija VBA redaktora iestatījumos.

Tas tiek darīts šādi:

  • Visual Basic redaktora izvēlnē noklikšķiniet uz darbarīki > opcijas
  • Parādītajā dialoglodziņā atveriet cilni Montāžas režisore
  • Atzīmējiet izvēles rūtiņu Nepieciešama mainīgā deklarācija un nospiediet OK

Kad tas ir iespējots, virkne Izteikta opcija tiks automātiski ievietots katra jaunā izveidotā moduļa sākumā.

Mainīgo un konstantu apjoms

Katram deklarētajam mainīgajam vai konstantei ir sava ierobežota darbības joma, tas ir, ierobežota programmas daļa, kurā šis mainīgais pastāv. Darbības joma ir atkarīga no tā, kur tika veikta mainīgā vai konstantes deklarācija. Ņemiet, piemēram, mainīgo sPVN_likme, kas tiek izmantots funkcijā Kopējās izmaksas. Nākamajā tabulā ir aplūkotas divas mainīgā tvēruma iespējas sPVN_likmedeklarēti divās dažādās pozīcijās modulī:

Opcija Explicit Dim sVAT_Rate As Single Function Total_Cost() As Double... Beigu funkcija
Ja mainīgais sPVN_likme deklarēts pašā moduļa sākumā, tad šī mainīgā apjoms būs viss modulis (ti mainīgais sPVN_likme tiks atpazītas ar visām šī moduļa procedūrām).

Tāpēc, ja funkcijā Kopējās izmaksas mainīgs sPVN_likme tiks piešķirta kāda vērtība, tad nākamajā tajā pašā modulī izpildītajā funkcijā tiks izmantots mainīgais sPVN_likme ar tādu pašu nozīmi.

Tomēr, ja tiek izsaukta kāda funkcija, kas atrodas citā modulī, tad tai mainīgais sPVN_likme nebūs zināms.

Opcija Skaidrā funkcija Total_Cost() As Double Dim sVAT_Rate As Single ... Beigu funkcija
Ja mainīgais sPVN_likme deklarēti funkcijas sākumā Kopējās izmaksas, tad tās darbības joma tiks ierobežota tikai ar šo funkciju (ti, funkcijas ietvaros Kopējās izmaksas, varat izmantot mainīgo sPVN_likme, bet ne ārpusē).

Mēģinot lietot sPVN_likme citā procedūrā VBA kompilators ziņos par kļūdu, jo šis mainīgais nav deklarēts ārpus funkcijas Kopējās izmaksas (ja tiek izmantots operators Izteikta opcija).

Iepriekš parādītajā piemērā mainīgais tiek deklarēts moduļa līmenī ar atslēgvārdu Dim. Tomēr var būt nepieciešams, lai deklarētos mainīgos var izmantot citos moduļos. Šādos gadījumos atslēgvārda vietā deklarēt mainīgo Dim ir jāizmanto atslēgas vārds valsts.

Starp citu, lai moduļa līmenī deklarētu mainīgo, nevis atslēgvārdu Dim var izmantot atslēgvārdu Privāts, kas norāda, ka šis mainīgais ir paredzēts lietošanai tikai pašreizējā modulī.

Varat arī izmantot atslēgvārdus, lai deklarētu konstantes. valsts и Privāts, bet ne atslēgvārda vietā Const, kopā ar to.

Tālāk minētie piemēri parāda atslēgvārdu lietošanu valsts и Privāts piemēro mainīgajiem un konstantēm.

Opcija Explicit Public sVAT_Rate As Single Public Const iMax_Count = 5000...    
Šajā piemērā atslēgvārds valsts izmanto, lai deklarētu mainīgo sPVN_likme un konstantes iMax_Count. Šādi deklarēto elementu apjoms būs viss pašreizējais projekts.

Tas nozīmē, ka sPVN_likme и iMax_Count būs pieejams jebkurā projekta modulī.

Opcija Explicit Private sVAT_Rate As Single Private Const iMax_Count = 5000...    
Šajā piemērā, lai deklarētu mainīgo sPVN_likme un konstantes iMax_Count izmantotais atslēgvārds Privāts. Šo elementu darbības joma ir pašreizējais modulis.

Tas nozīmē, ka sPVN_likme и iMax_Count būs pieejams visās pašreizējā moduļa procedūrās, bet nebūs pieejams procedūrām citos moduļos.

Atstāj atbildi