Edukiak
VBAn, beste edozein programazio-lengoaian bezala, aldagaiak eta konstanteak erabiltzen dira edozein balio gordetzeko. Izenak dioen bezala, aldagaiak alda daitezke, konstanteek balio finkoak gordetzen dituzten bitartean.
Adibidez, konstante bat Pi 3,14159265 balioa gordetzen du... "Pi" zenbakia ez da aldatuko programaren exekuzioan zehar, baina oraindik erosoagoa da balio hori konstante gisa gordetzea.
Aldi berean, aldagaia erabil dezakegu sVAT_Tasa erositako ondasunen BEZaren tasa gordetzeko. Balio aldakorra sVAT_Tasa erositako produktuaren arabera alda daiteke.
Datu motak
Aldagai eta konstante guztiak datu mota jakin batekoak dira. Beheko taulak VBAn erabiltzen diren datu motak zerrendatzen ditu balio posibleen deskribapen eta sortarekin:
Datu mota | Tamaina | Deskribapena | Balio sorta |
---|---|---|---|
byte | 1 byte | Zenbaki oso positiboak; sarritan datu bitaretarako erabiltzen da | tik 0 255 |
boolean | 2 byte | Egia ala gezurra izan daiteke | Egia edo Gezurra |
Osokoa | 2 byte | Zenbaki osoak (zatikirik gabe) | -32tik +768era |
Long | 4 byte | Zenbaki oso handiak (zatikirik gabe) | от -2 147 483 648 до +2 147 483 647 |
bakar | 4 byte | Doitasun bakarreko koma mugikorreko zenbakia | -3.4e38tik +3.4e38ra |
Bikoitza | 8 byte | Doitasun bikoitzeko koma mugikorreko zenbakia | -1.8e308tik +1.8e308ra |
Moneta | 8 byte | Koma mugikorreko zenbakia, hamartar kopuru finko batekin | от -922 337 203 685 477.5808 до +922 337 203 685 477.5807 |
data | 8 byte | Data eta ordua – Data motako datuak koma mugikorreko zenbaki batekin adierazten dira. Zenbaki honen zati osoak data adierazten du, eta zati zatiak ordua. | 1eko urtarrilaren 100etik 31ko abenduaren 9999ra arte |
Objektu | 4 byte | Objektu erreferentzia | Edozein objektu erreferentzia |
String | aldatzen ari da | Pertsonaien multzoa. String mota luzera finkoa edo aldakorra izan daiteke. Gehiago erabiltzen da luzera aldakorrarekin | Luzera finkoa: 65 karaktere inguru. Luzera aldakorra: 500 mila milioi karaktere inguru |
Aldaera | aldatzen ari da | Data, karaktere-katea edo karaktere-katea izan ditzake. Mota hau aldez aurretik zein datu-mota sartuko den ezagutzen ez den kasuetan erabiltzen da. | Zenbakia – Bikoitza, katea – Katea |
Jakina, goiko taula erabiliz eta datu-mota egokia aukeratuz, memoria modu ekonomikoagoan erabil dezakezu (adibidez, aukeratu datu-mota Osokoa ordez Long or bakar ordez Bikoitza). Hala ere, datu-mota trinkoagoak erabiltzen dituzunean, kontuz ibili behar duzu zure kodea ez den saiatuko balio neurrigabeak sartzen.
Aldagaiak eta konstanteak deklaratzea
Itzultzailearen oharra: VBAko aldagaiei buruz hitz egitean, aipatzea komeni da puntu garrantzitsu bat gehiago. Aldagai bat deklaratzen badugu baina ez badiogu baliorik ematen, orduan lehenetsitako balio batekin hasieratuko da:
• testu-kateak kate hutsekin hasieratzen dira;
• zenbakiak — balioa 0;
• motako aldagaiak boolean — Gezurra;
• datak – 30ko abenduaren 1899a.
Aldagai edo konstante bat erabili aurretik, deklaratu behar da. Horretarako, gehitu kode lerro sinple hau makroari:
Dim Имя_Переменной As Тип_Данных
Goiko kode lerroan Aldagai_izena kodean erabiliko den aldagaiaren izena da, eta Datu_mota artikulu honetan apur bat lehenago emandako taulako datu-motetako bat da. Adibidez:
Dim sVAT_Rate As Single Dim i Integer gisa
Konstanteak antzera deklaratzen dira, baina konstanteak deklaratzean, haien balioa berehala adierazi behar da. Adibidez, honela:
Const iMaxCount = 5000 Const iMaxScore = 100
Ez da beharrezkoa Excel-en aldagaiak deklaratzea. Lehenespenez, Excel-en sartutako baina deklaratu gabeko aldagai guztiek izango dute mota Aldaera eta balio numerikoa zein testuala onartzeko gai izango da.
Horrela, programatzaileak edozein unetan erabil dezake aldagai berria (nahiz eta deklaratu ez izan), eta Excel-ek motako aldagai gisa tratatuko du. Aldaera. Hala ere, hainbat arrazoi daude hau egin behar ez izateko:
- Memoriaren erabilera eta konputazio-abiadura. Ez baduzu aldagairik deklaratzen datu-motaren adierazpenarekin, lehenespenez, motaren arabera ezarriko da Aldaera. Datu mota honek beste datu-motak baino memoria gehiago erabiltzen du. Aldagai bakoitzeko byte gehigarri batzuk agian ez dira asko iruditzen, baina praktikan, programek milaka aldagai izan ditzakete (batez ere arrayekin lan egiten dutenean). Beraz, aldagaiek erabiltzen duten memoria gehigarria Aldaera, motako aldagaiekin alderatuta Osokoa or bakar, kopuru esanguratsua izan daiteke. Horrez gain, motako aldagaiekin eragiketak Aldaera beste mota bateko aldagaiekin baino askoz motelago exekutatzen dira, hurrenez hurren, motako mila aldagai gehigarri Aldaera kalkuluak nabarmen moteldu ditzake.
- Aldagaien izenetan akatsen prebentzioa. Aldagai guztiak deklaratzen badira, VBA instrukzioa erabil daiteke - Aukera esplizitua (geroago hitz egingo dugu) deklaratu gabeko aldagai guztiak identifikatzeko. Honek programan errore bat agertzea ezabatzen du gaizki idatzitako aldagai-izen baten ondorioz. Adibidez, izeneko aldagai bat erabiliz sVAT_Tasa, idazketa bat egin dezakezu eta aldagai honi balio bat emanez, idatzi: “VATRate = 0,175”. Espero da hemendik aurrera, aldagaia sVAT_Tasa 0,175 balioa eduki beharko luke, baina, noski, ez du. Erabilitako aldagai guztien derrigorrezko deklarazio modua gaituta badago, orduan VBA konpilatzaileak errore bat adieraziko du berehala, aldagaia ez baitu aurkituko. BEZTasa iragarritakoen artean.
- Aldagai baten mota deklaratuarekin bat ez datozen balioak nabarmentzea. Mota jakin bateko aldagai bat deklaratzen baduzu eta hari beste mota bateko datuak esleitzen saiatzen bazara, errore bat jasoko duzu, eta, zuzentzen ez bada, programa huts egitea eragin dezake. Lehen begiratuan, aldagaiak ez deklaratzeko arrazoi ona dirudi, baina, egia esan, aldagaietako batek jaso behar zituen datu okerrak jaso zituela ikusten da, askoz hobeto! Bestela, programak exekutatzen jarraitzen badu, emaitzak okerrak eta ustekabekoak izan daitezke, eta askoz zailagoa izango da akatsen kausa aurkitzea. Baliteke makroa " arrakastaz " exekutatzea ere. Ondorioz, errorea oharkabean pasatuko da eta lanean jarraituko da datu okerrekin!
Ildo horretan, komeni da datu-mota oker bat detektatzea eta akats horiek kodean ahalik eta lasterren zuzentzea. Arrazoi hauengatik, VBA makro bat idaztean aldagai guztiak deklaratzea gomendatzen da.
Aukera esplizitua
Operator Aukera esplizitua VBA kodean erabiliko diren aldagai guztiak deklaratzea eragiten du, eta deklaratu gabeko aldagai guztiak akats gisa markatzen ditu konpilazioan (kodea exekutatzen hasi aurretik). Operadore hau aplikatzea ez da zaila - idatzi lerro hau VBA fitxategiaren goialdean:
Option Explicit
Beti sartu nahi baduzu Aukera esplizitua sortutako VBA modulu berri bakoitzaren goialdean, hau automatikoki egin daiteke. Horretarako, aukera gaitu behar duzu Aldagaien Adierazpena eskatu VBA editorearen ezarpenetan.
Hau horrela egiten da:
- Visual Basic Editor menuan, egin klik tresnak > Aukerak
- Agertzen den elkarrizketa-koadroan, ireki fitxa Editor
- Begiratu laukia Aldagaien Adierazpena eskatu eta prentsa OK
Gaituta dagoenean, katea Aukera esplizitua automatikoki txertatuko da sortutako modulu berri bakoitzaren hasieran.
Aldagaien eta konstanteen esparrua
Adierazitako aldagai edo konstante bakoitzak bere esparru mugatua du, hau da, aldagai hori dagoen programaren zati mugatu bat. Eremua aldagaiaren edo konstantearen deklarazioa non egin denaren araberakoa da. Har dezagun, adibidez, aldagaia sVAT_Tasa, funtzioan erabiltzen dena Guztira_Kostua. Hurrengo taulan aldagai-esparrurako bi aukera aztertzen dira sVAT_Tasamoduluko bi posizio ezberdinetan deklaratua:
Aukera Esplizitua Dim sVAT_Rate Funtzio bakar gisa Total_Cost() Bikoitza gisa ... Amaiera Funtzioa | Aldagaia bada sVAT_Tasa moduluaren hasieran adierazita, orduan aldagai honen esparrua modulu osoa izango da (hau da, aldagaia sVAT_Tasa modulu honetako prozedura guztiek aitortuko dute). Beraz, funtzioan bada Guztira_Kostua aldagaia sVAT_Tasa balioren bat esleituko zaio, orduan modulu berean exekutatzen den hurrengo funtzioak aldagaia erabiliko du sVAT_Tasa esanahi berarekin. Hala ere, beste modulu batean kokatutako funtzioren bati deitzen bazaio, orduan aldagaia da sVAT_Tasa ez da ezagutuko. |
Aukera Funtzio esplizitua Total_Cost() Dim bikoitza gisa sVAT_Rate Bakar gisa ... Amaiera funtzioa | Aldagaia bada sVAT_Tasa funtzioaren hasieran deklaratua Guztira_Kostua, orduan bere esparrua funtzio honetara soilik mugatuko da (hau da, funtzioaren barruan Guztira_Kostua, aldagaia erabil dezakezu sVAT_Tasa, baina ez kanpoan). Erabili saiatzean sVAT_Tasa beste prozedura batean, VBA konpilatzaileak errore baten berri emango du aldagai hau funtziotik kanpo deklaratu ez delako Guztira_Kostua (baldin eta operadorea erabiltzen bada Aukera esplizitua). |
Goian erakusten den adibidean, aldagaia modulu mailan deklaratzen da gako-hitzarekin Ilundu. Hala ere, beharrezkoa izan daiteke deklaratutako aldagaiak beste modulu batzuetan erabiltzea. Horrelakoetan, gako-hitz baten ordez aldagai bat deklaratzeko Ilundu gakoa erabili behar da Publikoa.
Bide batez, modulu mailan aldagai bat deklaratzeko, gako-hitzaren ordez Ilundu gako-hitza erabil daiteke Pribatua, eta horrek adierazten du aldagai hau uneko moduluan soilik erabiltzeko pentsatuta dagoela.
Gako-hitzak ere erabil ditzakezu konstanteak deklaratzeko. Publikoa и Pribatua, baina ez gako-hitzaren ordez const, horrekin batera.
Ondorengo adibideek hitz gakoen erabilera erakusten dute Publikoa и Pribatua aldagai eta konstanteei aplikatuta.
Aukera Publiko esplizitua sVAT_Rate Konstituzio publiko bakarra gisa iMax_Count = 5000 ... | Adibide honetan, gako-hitza Publikoa aldagai bat deklaratzeko erabiltzen da sVAT_Tasa eta konstanteak iMax_Count. Horrela deklaratutako elementuen esparrua egungo proiektu osoa izango da. Horrek esan nahi du sVAT_Tasa и iMax_Count edozein proiektu-modulutan egongo da eskuragarri. |
Aukera Pribatu esplizitua sVAT_Rate Konstante pribatu bakar gisa iMax_Count = 5000 ... | Adibide honetan, aldagai bat deklaratzeko sVAT_Tasa eta konstanteak iMax_Count erabilitako gako-hitza Pribatua. Elementu horien esparrua egungo modulua da. Horrek esan nahi du sVAT_Tasa и iMax_Count egungo moduluko izapide guztietan egongo da eskuragarri, baina ez da beste moduluetako izapideetarako erabilgarri egongo. |