Razumijevanje varijabli i konstanti u Excel makroima

U ovom članku ćete naučiti koje su konstante i varijable u makroima, gdje se mogu koristiti i koja je glavna razlika između različitih tipova podataka. Također će se otkriti zašto su potrebne konstante, ako možete samo napisati varijablu i nikada je ne mijenjati.

Kao i drugi programski jezici, podaci mogu biti pohranjeni u varijablama ili konstantama (oboje se često naziva i kontejnerima podataka). Ovo je glavna razlika između ovih koncepata. Prvo se može promijeniti ovisno o tome šta se dešava u programu. Zauzvrat, konstante se postavljaju jednom i ne mijenjaju svoju vrijednost.

Konstante mogu biti korisne ako trebate koristiti istu veliku vrijednost više puta. Umjesto kopiranja broja, možete jednostavno napisati ime konstante. Na primjer, možete koristiti konstantu “Pi” za pohranjivanje Pi, što je konstantna vrijednost. Veoma je velika i svaki put je prilično teško napisati ili pretražiti i kopirati. I tako, dovoljno je napisati dva znaka, a okruženje automatski koristi željeni broj.

Korisnik Excela mora deklarirati varijable ako treba s vremena na vrijeme promijeniti vrijednost pohranjenu u njima. Na primjer, možete postaviti varijablu pod nazivom sVAT_Rate, koja će pohraniti trenutnu stopu PDV-a za proizvod. Ako se promijeni, možete je brzo ispraviti. Ovo je posebno korisno za one koji posluju u Sjedinjenim Državama, gdje neka dobra možda uopće ne podliježu PDV-u (a ovaj porez se također razlikuje od države do države).

Tipovi podataka

Svaki kontejner podataka može biti jedan od nekoliko tipova. Evo tabele koja opisuje standardne tipove obrađenih informacija. Ima ih mnogo, a početniku se u početku može učiniti da se ponavljaju. Ali ovo je iluzoran osjećaj. Čitajte dalje da biste saznali zašto je navođenje ispravnog tipa podataka toliko važno.

Ne preporučuje se korištenje tipa podataka koji zauzima više prostora u memoriji za male brojeve. Na primjer, za broj 1 dovoljno je koristiti tip Byte. Ovo će imati pozitivan efekat na performanse izvršnog modula, posebno na slabim računarima. Ali ovdje je važno ne ići predaleko. Ako koristite tip podataka koji je previše kompaktan, prevelika vrijednost možda neće stati u njega.

Deklarisanje konstanti i varijabli

Strogo se ne preporučuje korištenje spremnika podataka bez prethodnog deklariranja. Tada se mogu pojaviti brojni problemi, da bi se izbjegli, potrebno je napisati nekoliko malih linija koda sa nabrajanjem varijabli ili konstanti.

Za deklarisanje varijable koristi se naredba Dim. Na primjer, ovako:

Dim Varijabla_Naziv kao cijeli broj

Variable_Name je ime varijable. Zatim se upisuje As operator, koji označava tip podataka. Umjesto nizova “Variable_Name” i “Integer”, možete umetnuti vlastito ime i tip podataka.

Konstante se također mogu deklarirati, ali prvo morate navesti njihovu vrijednost. Jedna od opcija je:

Konst iMaxCount = 5000

Iskreno rečeno, u nekim slučajevima možete bez deklariranja varijable, ali u ovom slučaju će im se automatski dodijeliti tip Variant. Međutim, ovo se ne preporučuje iz sljedećih razloga:

  1. Varijanta se obrađuje mnogo sporije, a ako takvih varijabli ima mnogo, obrada informacija može biti značajno usporena na slabim računarima. Čini se da će te sekunde odlučiti? Ali ako morate napisati veliki broj linija koda, a zatim ga pokrenuti i na slabim računarima (koji se još uvijek prodaju, s obzirom na to da moderni uredski paketi zahtijevaju puno RAM-a), možete potpuno zaustaviti posao. Postoje slučajevi kada je loše osmišljeno pisanje makronaredbi dovelo do zamrzavanja pametnih knjiga koje imaju malu količinu RAM-a i nisu dizajnirane za obavljanje složenih zadataka. 
  2. Greške u nazivima su dozvoljene, što se može sprečiti korišćenjem naredbe Option Explicit, koja vam omogućava da pronađete nedeklarisanu varijablu, ako je pronađena. Ovo je jednostavan način za otkrivanje grešaka, jer i najmanja greška u kucanju uzrokuje da tumač ne može identificirati varijablu. A ako uključite način deklaracije varijable, tumač vam jednostavno neće dozvoliti da pokrenete makro ako se pronađu kontejneri podataka koji nisu deklarirani na samom početku modula.
  3. Izbjegnite greške uzrokovane vrijednostima varijabli koje ne odgovaraju tipu podataka. Normalno, dodeljivanje tekstualne vrednosti celobrojnoj varijabli će izazvati grešku. Da, s jedne strane, generički tip se dodjeljuje bez deklaracije, ali ako se deklariraju unaprijed, onda se mogu izbjeći slučajne greške.

Stoga, uprkos svemu, toplo je preporučljivo deklarisati sve varijable u Excel makroima.

Postoji još jedna stvar koju treba imati na umu kada deklarirate varijable. Moguće je ne dodijeliti nikakve vrijednosti varijabli kada je deklarirate, ali u ovom slučaju ona dobiva zadanu vrijednost. Na primjer:

  1. Linije su prazne.
  2. Brojevi poprimaju vrijednost 0.
  3. Varijable tipa Boolean u početku se smatraju lažnim.
  4. Standardni datum je 30. decembar 1899. godine.

Na primjer, ne morate dodijeliti vrijednost 0 cjelobrojnoj varijabli ako nijedna vrijednost nije prethodno navedena. Ona već sadrži ovaj broj.

Opcija Eksplicitna izjava

Ova izjava vam omogućava da deklarirate sve varijable koje se koriste u VBA kodu i odredite prisustvo bilo kojih nedeklariranih kontejnera prije nego što se kod pokrene. Da biste koristili ovu funkciju, jednostavno napišite red Option Explicit koda na samom vrhu koda makroa.

Ako treba da uključite ovu izjavu u svoj kod svaki put, to možete učiniti pomoću posebne postavke u VBA editoru. Da biste omogućili ovu opciju, morate:

  1. Idite na razvojno okruženje duž putanje – Alati > Opcije.
  2. U prozoru koji se otvori nakon ovoga otvorite karticu Editor.
  3. I na kraju, potvrdite okvir pored stavke Zahtijeva deklaraciju varijable.

Po završetku ovih koraka, kliknite na dugme “OK”. 

To je to, sada kada pišete svaki novi makro, ovaj red će se automatski umetnuti na vrh koda.

Opseg konstanti i varijabli

Svaka varijabla ili konstanta ima samo ograničen opseg. Zavisi gdje to deklarirate.

Pretpostavimo da imamo funkciju Ukupni troškovi(), i koristi varijablu sVAT_stopa. U zavisnosti od pozicije u modulu, imaće različit opseg:

Opcija Eksplicitna

Dim sVAT_Rate As Single

Funkcija Total_Cost() As Double

.

.

.

Kraj funkcija

Ako je varijabla deklarirana na vrhu samog modula, ona se širi kroz taj modul. Odnosno, može se pročitati svakom procedurom.

Štaviše, ako je jedna od procedura promijenila vrijednost varijable, onda će sljedeća također pročitati ovu ispravljenu vrijednost. Ali u drugim modulima ova varijabla se i dalje neće čitati.

Opcija Eksplicitna

Funkcija Total_Cost() As Double

Dim sVAT_Rate As Single

   .

   .

   .

Kraj funkcija

U ovom slučaju, varijabla je deklarirana unutar procedure, a tumač će baciti grešku ako se koristi u drugoj proceduri.

Ako želite da varijablu čitaju drugi moduli, morate koristiti ključnu riječ Public umjesto ključne riječi Dim. Slično, možete ograničiti opseg varijable samo na trenutni modul koristeći naredbu Public, koja je napisana umjesto riječi Dim.

Opseg konstanti možete podesiti na sličan način, ali ključna riječ ovdje je napisana zajedno sa Const operatorom.

Evo tabele sa dobrim primerom kako radi sa konstantama i varijablama.

Opcija Eksplicitna

Javni PDV_Stopa kao pojedinačna

Public Const iMax_Count = 5000

U ovom primjeru možete vidjeti kako se ključna riječ Public koristi za deklariranje varijable i šta trebate napisati u uređivaču Visual Basica da biste deklarirali javnu konstantu. Opseg ovih kontejnera vrijednosti odnosi se na sve module.
Opcija Eksplicitna

Privatni PDV_Stopa kao pojedinac

Privatni Const iMax_Count = 5000

Ovdje se varijable i konstante deklariraju pomoću ključne riječi Private. To znači da se mogu vidjeti samo unutar trenutnog modula, a procedure u drugim modulima ih ne mogu koristiti.

Zašto su potrebne konstante i varijable

Upotreba konstanti i varijabli omogućava vam da povećate stepen razumljivosti koda. A ako početnici općenito nemaju pitanja zašto su potrebne varijable, onda postoje mnoge nejasnoće u vezi potrebe za konstantama. I ovo pitanje izgleda, na prvi pogled, sasvim logično. Na kraju krajeva, možete deklarirati varijablu jednom i nikada je više ne mijenjati.

Ispostavilo se da je odgovor negdje u istoj ravni kao u pogledu upotrebe tipova podataka koji zauzimaju veliki prostor u memoriji. Ako imamo posla s velikim brojem varijabli, možemo slučajno promijeniti postojeći kontejner. Ako korisnik propiše da se određena vrijednost nikada neće promijeniti, okruženje će to automatski kontrolirati.

Ovo je posebno važno kada makro napiše nekoliko programera. Može se znati da se neka varijabla ne bi trebala mijenjati. A drugi nije. Ako navedete Const operator, drugi programer će znati da se ova vrijednost ne mijenja.

Ili, ako postoji konstanta s jednim imenom, a varijabla ima drugačije, ali slično ime. Programer ih može jednostavno zbuniti. Na primjer, jedna varijabla koju ne treba mijenjati zove se Varijabla11, a druga koja se može uređivati ​​zove se Varijabla1. Osoba može automatski, prilikom pisanja koda, slučajno preskočiti dodatnu jedinicu i ne primijetiti je. Kao rezultat toga, spremnik za vrijednosti će se promijeniti, koji se ne smije dirati.

Ili sam programer može zaboraviti koje varijable može dodirnuti, a koje ne. To se često dešava kada se kod piše nekoliko sedmica, a njegova veličina postane velika. Za to vrijeme vrlo je lako zaboraviti čak i šta znači ova ili ona varijabla.

Da, u ovoj situaciji možete s komentarima, ali nije li lakše odrediti riječ Const?

zaključci

Varijable su bitna komponenta makro programiranja, koje vam omogućavaju izvođenje složenih operacija, od proračuna do obavještavanja korisnika o određenim događajima ili specificiranja određenih vrijednosti u ćelijama proračunske tablice.

Konstante treba koristiti ako programer sigurno zna da se sadržaj ovih kontejnera neće promijeniti u budućnosti. Preporučuje se da se ne koriste varijable umjesto toga, jer je moguće slučajno napraviti grešku.

Ostavite odgovor