Izpratne par Excel VBA datu tipiem (mainīgie un konstantes)

Programmā Excel VBA jums bieži būs jāizmanto mainīgie un konstantes.

Strādājot ar VBA, mainīgais ir vieta datora atmiņā, kur var saglabāt datus. Datu veids, ko varat glabāt mainīgajā, ir atkarīgs no mainīgā datu veida.

Piemēram, ja vēlaties saglabāt veselus skaitļus mainīgajā, jūsu datu tips būs “Vesels skaitlis”, un, ja vēlaties saglabāt tekstu, jūsu datu tips būs “String”.

Vairāk par datu veidiem vēlāk šajā apmācībā.

Kamēr mainīgā vērtība mainās, kad kods tiek izstrādāts, konstante satur vērtību, kas nekad nemainās. Kā laba kodēšanas prakse, jums vajadzētu definēt gan mainīgo, gan nemainīgo datu tipu.

Kāpēc izmantot mainīgos VBA?

Kodējot VBA, jums būs nepieciešami mainīgie, kurus varat izmantot vērtības turēšanai.

Mainīgā izmantošanas priekšrocība ir tā, ka jūs varat mainīt mainīgā vērtību kodā un turpināt to izmantot kodā.

Piemēram, zemāk ir kods, kas pievieno pirmos 10 pozitīvos skaitļus un pēc tam ziņojuma lodziņā parāda rezultātu:

Sub AddFirstTenNumbers () Dim Var kā vesels skaitlis Dim i Kā vesels skaitlis Dim k kā vesels skaitlis Attiecībā uz i = 1 līdz 10 k = k + i Nākamais i MsgBox k Beigt apakš

Iepriekš minētajā kodā ir trīs mainīgie - Var, i, un k.

Iepriekš minētais kods izmanto cilni Nākotnei, kur visi šie trīs mainīgie tiek mainīti, kad cilpas ir pabeigtas.

Mainīgā lietderība ir tāda, ka to var mainīt, kamēr tiek izstrādāts kods.

Zemāk ir daži noteikumi, kas jāpatur prātā, nosaucot mainīgos VBA:

  1. Varat izmantot alfabētu, ciparus un pieturzīmes, bet pirmajam skaitlim ir jābūt alfabētam.
  2. Mainīgā nosaukumā nevar izmantot atstarpi vai punktu. Tomēr varat izmantot pasvītrojuma rakstzīmi, lai mainīgo nosaukumi būtu lasāmāki (piemēram, procentu likme)
  3. Mainīgo nosaukumos nevar izmantot speciālās rakstzīmes (#, $, %, &, vai!)
  4. VBA neatšķir gadījumus mainīgā nosaukumā. Tātad “procentu likme” un “procentu likme” VBA ir vienādi. Lai mainīgos padarītu lasāmākus, varat izmantot jauktos burtus.
  5. VBA ir daži rezervēti nosaukumi, kurus varat izmantot mainīgā nosaukumam. Piemēram, jūs nevarat izmantot vārdu “Tālāk” kā mainīgā nosaukumu, jo tas ir rezervēts nosaukums nākamajai cilpai.
  6. Mainīgā nosaukums var būt līdz 254 rakstzīmēm garš.

Mainīgo datu veids

Lai pēc iespējas labāk izmantotu mainīgos, ir ieteicams norādīt mainīgā datu tipu.

Datu veids, ko piešķirat mainīgajam, būs atkarīgs no tā, kāda veida datus vēlaties glabāt šajā mainīgajā.

Zemāk ir tabula, kurā parādīti visi pieejamie datu veidi, kurus varat izmantot programmā Excel VBA:

Datu tips Izmantoti baiti Vērtību diapazons
Baits 1 baits 0 līdz 255
Būla 2 baiti Patiesība vai meli
Vesels skaitlis 2 baiti -32 768 līdz 32 767
Garš (garš vesels skaitlis) 4 baiti -2 147 483 648 līdz 2 147 483 647
Viens 4 baiti -3.402823E38 līdz -1.401298E -45 negatīvām vērtībām; 1.401298E-45 līdz 3.402823E38 pozitīvām vērtībām
Dubultā 8 baiti -1,79769313486231E308 līdz -4,94065645841247E-324 negatīvām vērtībām; 4.94065645841247E-324 līdz 1,79769313486232E308 pozitīvām vērtībām
Valūta 8 baiti -922,337,203,685,477.5808 līdz 922,337,203,685,477.5807
Decimālskaitlis 14 baiti +/- 79,228,162,514,264,337,593,543,950,335 bez komata; +/- 7,9228162514264337593543950335 ar 28 vietām pa labi no komata
Datums 8 baiti 100. gada 1. janvāris - 9999. gada 31. decembris
Objekts 4 baiti Jebkura objekta atsauce
Stīga (mainīga garuma) 10 baiti + virknes garums No 0 līdz aptuveni 2 miljardiem
Stīga (fiksēta garuma) Stīgas garums 1 līdz aptuveni 65 400
Variants (ar cipariem) 16 baiti Jebkura skaitliska vērtība līdz dubultā diapazonam
Variants (ar rakstzīmēm) 22 baiti + virknes garums Tāds pats diapazons kā mainīga garuma virknei
Lietotājs definēts Atšķiras Katra elementa diapazons ir tāds pats kā tā datu tipa diapazons.

Kad kodā norādāt datu tipu mainīgajam, tas norāda VBA, kā šo mainīgo saglabāt un cik daudz vietas tam piešķirt.

Piemēram, ja jums jāizmanto mainīgais, kas paredzēts mēneša skaitļa turēšanai, varat izmantot datu tipu BYTE (kas var ietvert vērtības no 0 līdz 255). Tā kā mēneša skaitlis nepārsniegs 12, tas darbosies labi, kā arī rezervēs mazāk atmiņas šim mainīgajam.

Gluži pretēji, ja jums ir nepieciešams mainīgais, lai saglabātu rindu numurus programmā Excel, jums jāizmanto datu tips, kas var ietvert skaitli līdz 1048756. Tāpēc vislabāk ir izmantot garo datu tipu.

Mainīgo datu veidu deklarēšana

Kā laba kodēšanas prakse, rakstot kodu, jums ir jādeklarē mainīgo lielumi (vai konstantes). To darot, pārliecinieties, ka VBA piešķir mainīgajam tikai norādīto atmiņu, un tas var paātrināt jūsu koda darbību.

Tālāk ir sniegts piemērs, kurā dažādiem mainīgajiem esmu deklarējis dažādus datu veidus:

Sub DeclaringVariables () Dim X kā vesels skaitlis Dim Email kā virkne Dim FirstName As String Dim RowCount as Long Dim Today Datums kā datuma beigas Sub

Lai deklarētu mainīgo datu tipu, jāizmanto DIM priekšraksts (tas ir saīsinājums no Dimension).

In “Dim X kā vesels skaitlis“Es esmu deklarējis mainīgo X kā veselu skaitļu datu tipu.

Tagad, kad es to izmantoju savā kodā, VBA zinātu, ka X var turēt tikai veselu skaitļu datu tipu.

Ja mēģināšu tam piešķirt vērtību, kas nav vesels skaitlis, tiks parādīts kļūdas ziņojums (kā parādīts zemāk):

Piezīme. Varat arī izvēlēties nedeklarēt datu tipu, tādā gadījumā VBA automātiski ņem vērā varianta datu tipa mainīgo. Datu tips var ietvert jebkuru datu tipu. Lai gan tas varētu šķist ērti, nav laba prakse izmantot datu tipa variantus. Tas parasti aizņem vairāk atmiņas un var palēnināt jūsu VBA koda darbību.

Mainīgas deklarācijas noteikšana par obligātu (skaidra iespēja)

Lai gan jūs varat kodēt, nekad nedeklarējot mainīgos, tā ir laba prakse.

Mainīgo deklarēšanai ir ne tikai atmiņas taupīšana un koda efektivitāte, bet arī vēl viena būtiska priekšrocība - tā palīdz uztvert kļūdas, ko izraisa nepareizi uzrakstīti mainīgo nosaukumi.

Lai pārliecinātos, ka esat spiests deklarēt mainīgos, moduļa augšpusē pievienojiet šādu rindu.

Skaidrs variants

Pievienojot opciju “Explicit”, pirms koda palaišanas jums būs jādeklarē visi mainīgie. Ja ir kāds mainīgais, kas nav deklarēts, VBA parādītu kļūdu.

Izmantojot opciju Explicit, ir milzīgas priekšrocības.

Dažreiz jūs varat pieļaut drukas kļūdu un ievadīt nepareizu mainīgā nosaukumu.

Parasti VBA nevar zināt, vai tā ir kļūda vai apzināta. Tomēr, ja izmantojat opciju Explicit, VBA kļūdaini uzrakstītā mainīgā nosaukumu redzēs kā jaunu mainīgo, kas nav deklarēts, un parādīs jums kļūdu. Tas palīdzēs jums identificēt šos nepareizi uzrakstīto mainīgo nosaukumus, kurus var būt diezgan grūti pamanīt garā kodā.

Tālāk ir sniegts piemērs, kurā, izmantojot opciju “Explicit”, tiek konstatēta kļūda (kuru nevarētu iesprostot, ja nebūtu izmantojis opciju “Explicit”).

Sub CommissionCalc () Dim CommissionRate kā dubultā If diapazons ("A1"). Vērtība> 10000 Tad CommissionRate = 0,1 Else CommissionRtae = 0,05 End If MsgBox "Total Commission:" & Range ("A1"). Vērtība * CommissionRate End Sub

Ņemiet vērā, ka šajā kodā vienu reizi esmu uzrakstījis vārdu “CommissionRate”.

Ja es neizmantoju opciju Explicit, šis kods tiks palaists un parādīs nepareizu kopējo komisijas vērtību (ja vērtība šūnā A1 ir mazāka par 10000).

Bet, ja moduļa augšdaļā es izmantoju opciju Explicit, tas neļaus man palaist šo kodu, pirms es vai nu laboju kļūdaini uzrakstīto vārdu, vai paziņoju to par citu mainīgo. Tas parādīs kļūdu, kā parādīts zemāk:

Lai gan jūs varat ievietot rindu “Option Explicit” katru reizi, kad kodējat, šeit ir norādītas darbības, lai tā tiktu parādīta pēc noklusējuma:

  1. VB redaktora rīkjoslā noklikšķiniet uz Rīki.
  2. Noklikšķiniet uz Opcijas.
  3. Dialoglodziņā Opcijas noklikšķiniet uz cilnes Redaktors.
  4. Atzīmējiet opciju - “Pieprasīt mainīgo deklarāciju”.
  5. Noklikšķiniet uz Labi.

Kad esat iespējojis šo opciju, ikreiz, atverot jaunu moduli, VBA tam automātiski pievienos rindu “Option Explicit”.

Piezīme. Šī opcija ietekmēs tikai jebkuru moduli, kuru izveidosit pēc šīs opcijas iespējošanas. Visi esošie moduļi netiek ietekmēti.

Mainīgo lielums

Līdz šim mēs esam redzējuši, kā deklarēt mainīgo un piešķirt tam datu tipus.

Šajā sadaļā es apskatīšu mainīgo darbības jomu un to, kā jūs varat deklarēt mainīgo, kas jāizmanto tikai apakšprogrammā, visā modulī vai visos moduļos.

Mainīgā darbības joma nosaka, kur mainīgo var izmantot VBA,

Ir trīs veidi, kā Excel VBA izmantot mainīgo.

  1. Vienā apakšprogrammā (vietējie mainīgie)
  2. Moduļa ietvaros (moduļa līmeņa mainīgie)
  3. Visos moduļos (publiskie mainīgie)

Apskatīsim katru no tiem detalizēti.

Vienā apakšprogrammā (vietējie mainīgie)

Kad jūs deklarējat mainīgo apakšprogrammā/procedūrā, šis mainīgais ir pieejams tikai šai apakšprogrammai.

Jūs to nevarat izmantot citās moduļa apakšprogrammās.

Tiklīdz apakšprogramma beidzas, mainīgais tiek izdzēsts un tā izmantotā atmiņa tiek atbrīvota.

Zemāk redzamajā piemērā mainīgie tiek deklarēti apakšprogrammā un tiks izdzēsti, kad šī apakšprogramma beigsies.

Moduļa ietvaros (moduļa līmeņa mainīgie)

Ja vēlaties, lai mainīgais būtu pieejams visām moduļa procedūrām, tas jādeklarē moduļa augšpusē (nevis kādā apakšprogrammā).

Kad esat to deklarējis moduļa augšpusē, varat izmantot šo mainīgo visās šī moduļa procedūrās.

Iepriekš minētajā piemērā mainīgais “i” ir norādīts moduļa augšpusē, un to var izmantot visi moduļi.

Ņemiet vērā: kad apakšprogramma beidzas, moduļa līmeņa mainīgie netiek dzēsti (tā saglabā savu vērtību).

Zemāk ir piemērs, kur man ir divi kodi. Kad es izpildu pirmo procedūru un pēc tam otro, “i” vērtība kļūst par 30 (jo tai ir 10 vērtība no pirmās procedūras)

Visos moduļos (publiskie mainīgie)

Ja vēlaties, lai mainīgais būtu pieejams visās darbgrāmatas procedūrās, tas jādeklarē ar publisko atslēgvārdu (nevis DIM).

Zemāk esošā koda rinda moduļa augšpusē padarītu mainīgo “CommissionRate” pieejamu visos darbgrāmatas moduļos.

 Public CommissionRate As Double

Jūs varat ievietot mainīgo deklarāciju (izmantojot publisko atslēgvārdu) jebkurā no moduļiem (augšpusē pirms jebkuras procedūras).

Statiskie mainīgie (kas saglabā vērtību)

Strādājot ar vietējiem mainīgajiem, tiklīdz procedūra ir beigusies, mainīgais zaudēs savu vērtību un tiks izdzēsts no VBA atmiņas.

Ja vēlaties, lai mainīgais saglabātu vērtību, jums jāizmanto Statisks atslēgvārds.

Vispirms ļaujiet man parādīt, kas notiek normālā gadījumā.

Zemāk esošajā kodā, veicot procedūru vairākas reizes, tā katru reizi parādīs vērtību 10.

Apakšprocedūra1 () Dim i Kā vesels skaitlis i = i + 10 MsgBox i End Sub

Tagad, ja DIM vietā izmantoju statisko atslēgvārdu un procedūru veicu vairākas reizes, tas turpinās rādīt vērtības ar soli 10. Tas notiek, mainīgajam “i” saglabājot savu vērtību un to izmantojot aprēķinos.

Apakšprocedūra1 () Statisks i Kā vesels skaitlis i = i + 10 MsgBox i End Sub

Konstantu deklarēšana programmā Excel VBA

Lai gan mainīgie var mainīties koda izpildes laikā, ja vēlaties iegūt fiksētas vērtības, varat izmantot konstantes.

Konstante ļauj piešķirt nosauktai virknei vērtību, kuru varat izmantot savā kodā.

Konstantes izmantošanas priekšrocība ir tā, ka tā atvieglo koda rakstīšanu un izpratni, kā arī ļauj kontrolēt visas fiksētās vērtības no vienas vietas.

Piemēram, ja jūs aprēķināt komisijas maksu un komisijas maksa ir 10%, varat izveidot konstanti (CommissionRate) un piešķirt tai vērtību 0,1.

Nākotnē, ja komisijas maksa mainīsies, jums tās ir jāveic tikai vienā vietā, nevis manuāli jāmaina kodā visur.

Zemāk ir koda piemērs, kurā konstantei esmu piešķīris vērtību:

Sub CalculateCommission () Dim CommissionValue As Double Const CommissionRate As Double = 0.1 CommissionValue = Diapazons ("A1") * CommissionRate MsgBox CommissionValue End Sub

Lai deklarētu konstanti, tiek izmantota šāda rinda:

Const CommissionRate kā dubultā = 0,1

Deklarējot konstantes, jums jāsāk ar atslēgvārdu “Const", Kam seko konstantes nosaukums.

Ņemiet vērā, ka šajā piemērā esmu norādījis konstantes datu tipu kā Double. Atkal ir laba prakse norādīt datu tipu, lai jūsu kods darbotos ātrāk un būtu efektīvāks.

Ja jūs nedeklarējat datu tipu, tas tiks uzskatīts par datu tipa variantu.

Tāpat kā mainīgajiem, arī konstantēm var būt darbības joma, pamatojoties uz to deklarēšanas vietu un veidu:

  1. Vienā apakšprogrammā (vietējās konstantes): Tie ir pieejami apakšprogrammā/procedūrā, kurā tie ir deklarēti. Kad procedūra beidzas, šīs konstantes tiek izdzēstas no sistēmas atmiņas.
  2. Moduļa ietvaros (moduļa līmeņa konstantes): Tie ir norādīti moduļa augšpusē (pirms jebkādas procedūras). Tie ir pieejami visām moduļa procedūrām.
  3. Visos moduļos (publiskās konstantes): Tie tiek deklarēti, izmantojot atslēgvārdu “Publisks” jebkura moduļa augšpusē (pirms jebkādas procedūras). Tie ir pieejami visām procedūrām visos moduļos.

Jums varētu patikt arī šādas VBA apmācības:

  • Kā ierakstīt makro programmā Excel
  • Darbs ar šūnām un diapazoniem programmā Excel VBA
  • Darbs ar darblapām, izmantojot Excel VBA
  • Darbs ar darbgrāmatām programmā Excel VBA
  • VBA pasākumi
  • Excel VBA cilpas
  • Kā palaist makro programmā Excel
  • Ja tad cits paziņojums programmā Excel VBA.

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave