Excel-eko makroetan aldagaiak eta konstanteak ulertzea

Artikulu honetan, makroetan zer konstante eta aldagai dauden, non erabil daitezkeen eta zein den datu mota ezberdinen arteko desberdintasun nagusia ikasiko duzu. Konstanteak zergatik behar diren ere azalduko da, aldagai bat idatzi eta inoiz aldatu ezin baduzu.

Beste programazio-lengoaia batzuk bezala, datuak aldagaietan edo konstanteetan gorde daitezke (biak ere datu-edukiontzi gisa aipatzen dira askotan). Hau da kontzeptu horien arteko desberdintasun nagusia. Lehenengoa programan gertatzen denaren arabera alda daiteke. Aldi berean, konstanteak behin ezartzen dira eta ez dute haien balioa aldatzen.

Konstanteak erabilgarriak izan daitezke balio handi bera hainbat aldiz erabili behar baduzu. Zenbakia kopiatu beharrean, konstantearen izena idatzi besterik ez duzu egin. Adibidez, "Pi" konstantea erabil dezakezu Pi gordetzeko, hau da, balio konstante bat. Oso handia da, eta aldi bakoitzean nahiko zaila da idaztea edo bilatu eta kopiatzea. Eta, beraz, nahikoa da bi karaktere idaztea, eta inguruneak automatikoki nahi den zenbakia erabiltzen du.

Excel erabiltzaileak aldagaiak deklaratu behar ditu noizean behin horietan gordetako balioa aldatu behar badu. Adibidez, sVAT_Rate izeneko aldagai bat ezar dezakezu, produktuaren uneko BEZ-tasa gordeko duena. Aldatzen bada, azkar zuzendu dezakezu. Hau bereziki erabilgarria da Estatu Batuetan negozioak egiten dituztenentzat, non baliteke ondasun batzuk BEZaren mende ez egotea (eta zerga hori ere desberdina da estatu batetik bestera).

Datu motak

Datu-edukiontzi bakoitza hainbat motatakoa izan daiteke. Hona hemen prozesatutako informazio mota estandarrak deskribatzen dituen taula. Asko dira, eta hasiera batean hasiberriari elkar errepikatzen dutela irudituko zaio. Baina hau sentimendu ilusio bat da. Irakurri zergatik den hain garrantzitsua datu-mota zuzena zehaztea.

Ez da gomendagarria memorian leku gehiago hartzen duen datu-mota erabiltzea zenbaki txikietarako. Adibidez, 1 zenbakiari dagokionez, nahikoa da Byte mota erabiltzea. Honek eragin positiboa izango du modulu exekutagarriaren errendimenduan, batez ere ordenagailu ahuletan. Baina garrantzitsua da hemen urrunegi ez joatea. trinkoegia den datu-mota erabiltzen baduzu, baliteke tamaina handiko balio bat ez sartzea.

Konstanteak eta aldagaiak deklaratzea

Gomendagarria da datu-edukiontzi bat lehenik deklaratu gabe erabiltzea. Orduan hainbat arazo sor daitezke, eta hori ekiditeko beharrezkoa da kode lerro txiki batzuk idaztea aldagaien edo konstanteen zenbaketarekin.

Aldagai bat deklaratzeko, Dim adierazpena erabiltzen da. Adibidez, honela:

Dim aldagai_izena zenbaki oso gisa

Variable_Name aldagaiaren izena da. Ondoren, As operadorea idazten da, datu-mota adieraziz. "Variable_Name" eta "Integer" kateen ordez, zure izena eta datu mota txerta ditzakezu.

Konstanteak ere deklara daitezke, baina lehenik haien balioa zehaztu behar duzu. Aukeretako bat hau da:

Konst iMaxCount = 5000

Zintzotasunez, kasu batzuetan aldagairik deklaratu gabe egin dezakezu, baina kasu honetan aldagai mota automatikoki esleituko zaie. Hala ere, ez da gomendagarria arrazoi hauengatik:

  1. Aldaera askoz mantsoago prozesatzen da, eta horrelako aldagai asko baldin badira, informazioaren prozesamendua nabarmen moteldu daiteke ordenagailu ahuletan. Badirudi segundo horiek erabakiko dutela? Baina kode-lerro ugari idatzi behar badituzu, eta gero ordenagailu ahuletan ere exekutatu (oraindik saltzen diren, bulego modernoek RAM asko behar dutela kontuan hartuta), lana erabat geldi dezakezu. Badira kasuak gaizki pentsatutako makroak idazteak RAM kopuru txikia duten eta zeregin konplexuak egiteko diseinatuta ez dauden liburu adimendunak izoztu dituenean. 
  2. Izenak akatsak onartzen dira, eta hori saihestu daiteke Option Explicit adierazpena erabiliz, deklaratu gabeko aldagai bat aurkitzeko aukera ematen duena, bat aurkituz gero. Akatsak detektatzeko modu erraza da hau, akats txikienak aldagaia identifikatu ezin izatea eragiten baitu interpreteak. Eta aldagaien deklarazio modua aktibatzen baduzu, interpreteak ez dizu makroa exekutatzen utziko moduluaren hasieran deklaratu ez ziren datu-edukiontziak aurkitzen badira.
  3. Saihestu datu-motarekin bat ez datozen balio aldagaiek eragindako erroreak. Normalean, osoko aldagai bati testu-balio bat esleitzeak errore bat sortuko du. Bai, alde batetik, mota generiko bat esleitzen da deklaraziorik gabe, baina aldez aurretik deklaratzen badira, ausazko akatsak saihestu daitezke.

Hori dela eta, dena gorabehera, oso gomendagarria da aldagai guztiak Excel-eko makroetan deklaratzea.

Aldagaiak deklaratzerakoan kontuan izan beharreko beste gauza bat dago. Posible da aldagai bati baliorik ez esleitzea hura deklaratzerakoan, baina kasu honetan balio lehenetsia hartzen du. Adibidez:

  1. Lerroak hutsik egiten dira.
  2. Zenbakiek 0 balioa hartzen dute.
  3. Boolear motako aldagaiak faltsutzat hartzen dira hasieran.
  4. Lehenetsitako data 30ko abenduaren 1899a da.

Adibidez, ez diozu 0 balioa esleitu behar aldagai oso bati aldez aurretik baliorik zehaztu ez bada. Zenbaki hau dauka dagoeneko.

Aukera Adierazpen esplizitua

Adierazpen honek VBA kodean erabiltzen diren aldagai guztiak deklaratzeko eta kodea exekutatu aurretik deklaratu gabeko edukiontzien presentzia zehazteko aukera ematen du. Ezaugarri hau erabiltzeko, besterik gabe idatzi Aukera kode esplizituaren lerro bat makro-kodearen goialdean.

Adierazpen hau zure kodean sartu behar baduzu aldi bakoitzean, egin dezakezu VBA editoreko ezarpen berezi bat erabiliz. Aukera hau gaitzeko, behar duzu:

  1. Joan garapen-ingurunera bidetik - Tresnak > Aukerak.
  2. Horren ondoren irekitzen den leihoan, ireki Editorea fitxa.
  3. Eta, azkenik, markatu Eskatu aldagaiaren adierazpena elementuaren ondoko laukia.

Urrats hauek amaitutakoan, egin klik "Ados" botoian. 

Hori da, orain makro berri bakoitza idaztean, lerro hau kodearen goialdean automatikoki txertatuko da.

Konstanteen eta aldagaien esparrua

Aldagai edo konstante bakoitzak esparru mugatu bat besterik ez du. Non deklaratzen duzun araberakoa da.

Demagun funtzio bat dugula Guztira_Kostua(), eta aldagaia erabiltzen du sVAT_Tasa. Moduluaren posizioaren arabera, esparru ezberdina izango du:

Aukera esplizitua

Dim sVAT_Rate Bakar gisa

Funtzioa Total_Cost() Bikoitza gisa

.

.

.

Amaiera Funtzioa

Modulu baten goialdean aldagai bat deklaratzen bada, modulu horretan zehar hedatzen da. Hau da, prozedura guztietan irakur daiteke.

Gainera, prozeduraren batek aldagaiaren balioa aldatu badu, hurrengoak ere irakurriko du balio zuzendu hori. Baina beste modulu batzuetan aldagai hori oraindik ez da irakurriko.

Aukera esplizitua

Funtzioa Total_Cost() Bikoitza gisa

Dim sVAT_Rate Bakar gisa

   .

   .

   .

Amaiera Funtzioa

Kasu honetan, aldagaia prozeduraren barruan deklaratzen da, eta interpreteak errore bat botako du beste prozedura batean erabiltzen bada.

Aldagaia beste modulu batzuek irakur dezatela nahi baduzu, Public gako-hitza erabili behar duzu Dim gako-hitzaren ordez. Era berean, aldagai baten esparrua uneko modulura soilik muga dezakezu Public adierazpena erabiliz, hau Dim hitzaren ordez idatzita dagoena.

Konstanteen esparrua antzeko moduan ezar dezakezu, baina hemen gako-hitza Const operadorearekin batera idazten da.

Hona hemen konstanteekin eta aldagaiekin funtzionatzen duen adibide on batekin taula bat.

Aukera esplizitua

sVAT_Tasa publikoa Bakar gisa

Public Const iMax_Count = 5000

Adibide honetan, Public gako-hitza aldagai bat deklaratzeko nola erabiltzen den ikus dezakezu eta Visual Basic editorean zer idatzi behar duzun konstante publiko bat deklaratzeko. Balio-edukiontzi hauen esparrua modulu guztiei aplikatzen zaie.
Aukera esplizitua

sVAT_Tasa pribatua Bakar gisa

Private Const iMax_Count = 5000

Hemen, aldagaiak eta konstanteak Private gako-hitza erabiliz deklaratzen dira. Horrek esan nahi du uneko moduluaren barruan soilik ikus daitezkeela eta beste moduluetako prozedurek ezin dituztela erabili.

Zergatik behar diren konstanteak eta aldagaiak

Konstanteak eta aldagaiak erabiltzeari esker, kodearen ulergarritasun maila areagotzen da. Eta, oro har, hasiberriek ez badute aldagaiak zergatik behar diren galdetzen, orduan anbiguotasun asko daude konstanteen beharrari buruz. Eta galdera honek, lehen begiratuan, nahiko logikoa dirudi. Azken finean, aldagai bat behin deklara dezakezu eta ez berriro aldatu.

Erantzuna, memorian espazio handia hartzen duten datu-moten erabilerari dagokionez, plano bereko nonbait agertzen da. Aldagai kopuru handi batekin ari bagara, nahi gabe lehendik dagoen edukiontzi bat alda dezakegu. Erabiltzaileak balio jakin bat ez dela inoiz aldatuko agintzen badu, inguruneak automatikoki kontrolatuko du hori.

Hau bereziki garrantzitsua da makroa hainbat programatzailek idazten dutenean. Batek jakin dezake aldagai batzuk ez direla aldatu behar. Eta bestea ez. Const operadorea zehazten baduzu, beste garatzaile batek jakingo du balio hori ez dela aldatzen.

Edo, izen bakarra duen konstante bat badago eta aldagaiak izen ezberdina, baina antzekoa badu. Garatzaileak nahas ditzake. Adibidez, aldatu behar ez den aldagai bati Aldagaia11 deitzen zaio, eta editatu daitekeen beste bati Aldagaia1. Pertsona batek automatikoki, kodea idaztean, ustekabean aparteko unitate bat saltatu dezake eta ez ohartu. Ondorioz, balioen edukiontzia aldatu egingo da, eta hori ez da ukitu behar.

Edo garatzaileak berak ahaztu dezake zein aldagai uki ditzakeen eta zeintzuk ez. Hau askotan gertatzen da kodea hainbat astez idazten denean, eta bere tamaina handia bihurtzen da. Denbora horretan, oso erraza da aldagai honek edo beste zer esan nahi duen ere ahaztea.

Bai, egoera honetan iruzkinekin egin dezakezu, baina ez al da errazagoa Konst hitza zehaztea?

Ondorioak

Aldagaiak makro-programazioaren funtsezko osagaiak dira, eragiketa konplexuak egiteko aukera ematen dutenak, kalkuluetatik hasi eta erabiltzaileari gertaera jakin batzuei buruz informatzera edo kalkulu-orri bateko gelaxketan balio zehatzak zehaztuz.

Konstanteak erabili behar dira garatzaileak ziur badaki edukiontzi horien edukia ez dela aldatuko etorkizunean. Aldagairik ez erabiltzea gomendatzen da, ustekabean akatsen bat egitea posible baita.

Utzi erantzun bat