Verstaan ​​veranderlikes en konstantes in Excel-makro's

In hierdie artikel sal jy leer wat konstantes en veranderlikes in makro's is, waar hulle gebruik kan word en wat die belangrikste verskil tussen verskillende datatipes is. Dit sal ook onthul word waarom konstantes nodig is, as jy net 'n veranderlike kan skryf en dit nooit kan verander nie.

Soos ander programmeertale, kan data in veranderlikes of konstantes gestoor word (waarvan albei ook dikwels na verwys word as datahouers). Dit is die belangrikste verskil tussen hierdie konsepte. Eersgenoemde kan verander na gelang van wat in die program gebeur. Op hul beurt word konstantes een keer gestel en verander nie hul waarde nie.

Konstante kan nuttig wees as jy dieselfde groot waarde verskeie kere moet gebruik. In plaas daarvan om die nommer te kopieer, kan jy eenvoudig die naam van die konstante skryf. Byvoorbeeld, jy kan die konstante "Pi" gebruik om Pi te stoor, wat 'n konstante waarde is. Dit is baie groot, en elke keer is dit nogal moeilik om dit te skryf of dit te soek en te kopieer. En dus is dit genoeg om twee karakters te skryf, en die omgewing gebruik outomaties die verlangde nommer.

Die Excel-gebruiker moet veranderlikes verklaar as hy van tyd tot tyd die waarde wat daarin gestoor moet word, moet verander. Byvoorbeeld, jy kan 'n veranderlike genaamd sVAT_Rate stel, wat die huidige BTW-koers vir die produk sal stoor. As dit verander, kan jy dit vinnig regstel. Dit is veral nuttig vir diegene wat sake doen in die Verenigde State, waar sommige goedere dalk glad nie aan BTW onderhewig is nie (en hierdie belasting verskil ook van staat tot staat).

Datatipes

Elke datahouer kan een van verskeie tipes wees. Hier is 'n tabel wat die standaard tipes verwerkte inligting beskryf. Daar is baie van hulle, en dit mag aanvanklik vir 'n beginner lyk asof hulle mekaar herhaal. Maar dit is 'n illusie gevoel. Lees verder om uit te vind waarom dit so belangrik is om die korrekte datatipe te spesifiseer.

Dit word nie aanbeveel om 'n datatipe te gebruik wat meer spasie in die geheue opneem vir klein getalle nie. Byvoorbeeld, vir die nommer 1 is dit voldoende om die Byte-tipe te gebruik. Dit sal 'n positiewe uitwerking hê op die werkverrigting van die uitvoerbare module, veral op swak rekenaars. Maar dit is belangrik om nie te ver hier te gaan nie. As jy 'n datatipe gebruik wat te kompak is, pas 'n te groot waarde dalk nie daarin nie.

Verklaar konstante en veranderlikes

Die gebruik van 'n datahouer sonder om dit eers te verklaar, word ten sterkste ontmoedig. Dan kan 'n aantal probleme ontstaan, om te vermy wat dit nodig is om 'n paar klein reëltjies kode te skryf met opsomming van veranderlikes of konstantes.

Om 'n veranderlike te verklaar, word die Dim-stelling gebruik. Byvoorbeeld, soos volg:

Dim Variable_Name As Heelgetal

Variable_Name is die naam van die veranderlike. Vervolgens word die As-operateur geskryf, wat die datatipe aandui. In plaas van die stringe "Variable_Name" en "Integer", kan jy jou eie naam en datatipe invoeg.

Konstante kan ook verklaar word, maar jy moet eers die waarde daarvan spesifiseer. Een van die opsies is:

Konst iMaxCount = 5000

In regverdigheid, in sommige gevalle kan jy doen sonder om 'n veranderlike te verklaar, maar in hierdie geval sal hulle outomaties die tipe Variant toegeken word. Dit word egter nie aanbeveel om die volgende redes nie:

  1. Variant word baie stadiger verwerk, en as daar baie sulke veranderlikes is, kan inligtingverwerking aansienlik vertraag word op swak rekenaars. Dit wil voorkom asof daardie sekondes sal besluit? Maar as jy 'n groot aantal reëls kode moet skryf, en dit dan ook op swak rekenaars moet laat loop (wat steeds verkoop word, aangesien moderne kantoorsuites baie RAM benodig), kan jy die werk heeltemal stop. Daar is gevalle waar ondeurdagte skryf van makro's gelei het tot die vries van slimboeke wat 'n klein hoeveelheid RAM het en nie ontwerp is om komplekse take uit te voer nie. 
  2. Misdruk in name word toegelaat, wat voorkom kan word deur die Opsie Eksplisiete stelling te gebruik, wat jou toelaat om 'n onverklaarde veranderlike te vind, indien een gevind word. Dit is 'n maklike manier om foute op te spoor, aangesien die geringste tikfout veroorsaak dat die tolk nie die veranderlike kan identifiseer nie. En as jy die veranderlike verklaringsmodus aanskakel, sal die tolk jou eenvoudig nie toelaat om die makro te laat loop as datahouers gevind word wat nie aan die begin van die module verklaar is nie.
  3. Vermy foute wat veroorsaak word deur veranderlike waardes wat nie ooreenstem met die datatipe nie. Normaalweg sal die toekenning van 'n tekswaarde aan 'n heelgetalveranderlike 'n fout veroorsaak. Ja, aan die een kant word 'n generiese tipe toegeken sonder 'n verklaring, maar as dit vooraf verklaar word, kan willekeurige foute vermy word.

Daarom, ten spyte van alles, word dit sterk aanbeveel om alle veranderlikes in Excel-makro's te verklaar.

Daar is nog een ding om in gedagte te hou wanneer veranderlikes verklaar word. Dit is moontlik om geen waardes aan 'n veranderlike toe te ken wanneer dit verklaar word nie, maar in hierdie geval verkry dit 'n verstekwaarde. Byvoorbeeld:

  1. Lyne word leeg gemaak.
  2. Die getalle neem die waarde 0 aan.
  3. Veranderlikes van tipe Boolean word aanvanklik as vals beskou.
  4. Die verstekdatum is 30 Desember 1899.

Byvoorbeeld, jy hoef nie die waarde 0 aan 'n heelgetalveranderlike toe te ken as geen waarde voorheen gespesifiseer is nie. Sy bevat reeds hierdie nommer.

Opsie Eksplisiete Verklaring

Hierdie stelling laat jou toe om al die veranderlikes wat in die VBA-kode gebruik word, te verklaar en die teenwoordigheid van enige onverklaarde houers te bepaal voordat die kode uitgevoer word. Om hierdie kenmerk te gebruik, skryf eenvoudig 'n reël van Opsie Eksplisiete kode heel bo aan die makro-kode.

As jy hierdie stelling elke keer in jou kode moet insluit, kan jy dit doen deur 'n spesiale instelling in die VBA-redigeerder te gebruik. Om hierdie opsie te aktiveer, moet jy:

  1. Gaan na die ontwikkelingsomgewing langs die pad – Gereedskap > Opsies.
  2. In die venster wat hierna oopmaak, maak die Editor-oortjie oop.
  3. En laastens, merk die blokkie langs die Vereis veranderlike verklaring item.

Nadat u hierdie stappe voltooi het, klik op die "OK"-knoppie. 

Dit is dit, nou wanneer elke nuwe makro geskryf word, sal hierdie reël outomaties bo-aan die kode ingevoeg word.

Omvang van konstante en veranderlikes

Elke veranderlike of konstante het slegs 'n beperkte omvang. Dit hang af waar jy dit verklaar.

Gestel ons het 'n funksie Totale koste(), en dit gebruik die veranderlike sVAT_Tarief. Afhangende van die posisie in die module, sal dit 'n ander omvang hê:

Opsie eksplisiet

Dim sVAT_Rate As Enkel

Funksie Total_Cost() As Dubbel

.

.

.

Jaareindfunksie

As 'n veranderlike aan die bokant van 'n module self verklaar word, versprei dit regdeur daardie module. Dit wil sê, dit kan deur elke prosedure gelees word.

Verder, as een van die prosedures die waarde van die veranderlike verander het, sal die volgende een ook hierdie gekorrigeerde waarde lees. Maar in ander modules sal hierdie veranderlike steeds nie gelees word nie.

Opsie eksplisiet

Funksie Total_Cost() As Dubbel

Dim sVAT_Rate As Enkel

   .

   .

   .

Jaareindfunksie

In hierdie geval word die veranderlike binne die prosedure verklaar, en die tolk sal 'n fout gooi as dit in 'n ander prosedure gebruik word.

As jy wil hê dat die veranderlike deur ander modules gelees moet word, moet jy die Openbare sleutelwoord in plaas van die Dim sleutelwoord gebruik. Net so kan jy die omvang van 'n veranderlike beperk tot slegs die huidige module deur die Openbare verklaring te gebruik, wat in plaas van die woord Dim geskryf is.

Jy kan die omvang van konstantes op 'n soortgelyke manier stel, maar die sleutelwoord hier word saam met die Const-operateur geskryf.

Hier is 'n tabel met 'n goeie voorbeeld van hoe dit met konstantes en veranderlikes werk.

Opsie eksplisiet

Publieke sVAT_Tarief As Enkellopend

Public Const iMax_Count = 5000

In hierdie voorbeeld kan jy sien hoe die Openbare sleutelwoord gebruik word om 'n veranderlike te verklaar, en wat jy in die Visual Basic-redigeerder moet skryf om 'n publieke konstante te verklaar. Die omvang van hierdie waardehouers is van toepassing op alle modules.
Opsie eksplisiet

Privaat sVAT_Rate As Enkel

Private Const iMax_Count = 5000

Hier word veranderlikes en konstantes verklaar deur die Private sleutelwoord te gebruik. Dit beteken dat hulle slegs binne die huidige module gesien kan word, en prosedures in ander modules kan dit nie gebruik nie.

Waarom konstantes en veranderlikes nodig is

Die gebruik van konstantes en veranderlikes laat jou toe om die mate van verstaanbaarheid van die kode te verhoog. En as beginners in die algemeen nie vrae het oor hoekom veranderlikes nodig is nie, dan is daar baie onduidelikhede oor die behoefte aan konstantes. En hierdie vraag lyk met die eerste oogopslag redelik logies. Jy kan immers 'n veranderlike een keer verklaar en dit nooit weer verander nie.

Die antwoord blyk iewers in dieselfde vlak te wees as met betrekking tot die gebruik van datatipes wat 'n groot spasie in die geheue beslaan. As ons met 'n groot aantal veranderlikes te doen het, kan ons per ongeluk 'n bestaande houer verander. As die gebruiker voorskryf dat 'n sekere waarde nooit sal verander nie, dan sal die omgewing dit outomaties beheer.

Dit is veral belangrik wanneer die makro deur verskeie programmeerders geskryf word. Mens weet dalk dat een of ander veranderlike nie behoort te verander nie. En die ander is nie. As jy die Const-operateur spesifiseer, sal 'n ander ontwikkelaar weet dat hierdie waarde nie verander nie.

Of, as daar 'n konstante met een naam is, en die veranderlike het 'n ander, maar soortgelyke naam. Die ontwikkelaar kan hulle eenvoudig verwar. Byvoorbeeld, een veranderlike wat nie verander hoef te word nie, word Variable11 genoem, en 'n ander wat geredigeer kan word, word Variable1 genoem. 'n Persoon kan outomaties, wanneer kode geskryf word, per ongeluk 'n ekstra eenheid oorslaan en dit nie raaksien nie. As gevolg hiervan sal die houer vir waardes verander word, wat nie aangeraak moet word nie.

Of die ontwikkelaar self kan vergeet watter veranderlikes hy kan raak en watter nie. Dit gebeur dikwels wanneer die kode vir 'n paar weke geskryf word, en die grootte daarvan word groot. Gedurende hierdie tyd is dit baie maklik om selfs te vergeet wat hierdie of daardie veranderlike beteken.

Ja, jy kan doen met kommentaar in hierdie situasie, maar is dit nie makliker om die woord Konst te spesifiseer nie?

Gevolgtrekkings

Veranderlikes is 'n noodsaaklike komponent van makroprogrammering, wat jou toelaat om komplekse bewerkings uit te voer, van berekeninge om die gebruiker in te lig oor sekere gebeurtenisse of om spesifieke waardes in die selle van 'n sigblad te spesifiseer.

Konstante moet gebruik word as die ontwikkelaar verseker weet dat die inhoud van hierdie houers nie in die toekoms sal verander nie. Dit word aanbeveel om nie eerder veranderlikes te gebruik nie, aangesien dit moontlik is om per ongeluk 'n fout te maak.

Lewer Kommentaar