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ēri | Apraksts | Vērtību diapazons |
---|---|---|---|
Baits | 1 baiti | Pozitīvi veseli skaitļi; bieži izmanto binārajiem datiem | no 0 līdz 255 |
Būla | 2 baiti | Var būt patiess vai nepatiess | Patiesība vai meli |
Vesels skaitlis | 2 baiti | Veseli skaitļi (bez daļdaļas) | no -32 līdz +768 |
Garš | 4 baiti | Lieli veseli skaitļi (bez daļdaļas) | от -2 147 483 648 до +2 147 483 647 |
viens | 4 baiti | Viena precizitātes peldošā komata skaitlis | no -3.4e38 līdz +3.4e38 |
Dubultosies | 8 baiti | Dubults precizitātes peldošā komata skaitlis | no -1.8e308 līdz +1.8e308 |
Valūta | 8 baiti | Peldošā komata skaitlis ar noteiktu zīmju skaitu aiz komata | от -922 337 203 685 477.5808 до +922 337 203 685 477.5807 |
datums | 8 baiti | Datums 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 |
Objekts | 4 baiti | Objekta atsauce | Jebkura objekta atsauce |
Rinda | mainās | Rakstzīmju kopa. Virknes veids var būt fiksēts vai mainīgs garums. Biežāk izmanto ar mainīgu garumu | Fiksēts garums – līdz aptuveni 65 rakstzīmēm. Mainīgs garums – līdz aptuveni 500 miljardiem rakstzīmju |
variants | mainās | Var 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:
- 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.
- 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.
- 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. |