Razumijevanje varijabli i konstanti u Excel makronaredbama

U ovom ćete članku naučiti što su konstante i varijable u makronaredbama, gdje se mogu koristiti i koja je glavna razlika između različitih vrsta 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 se mogu pohraniti u varijablama ili konstantama (oboje se također često naziva spremnicima podataka). Ovo je glavna razlika između ovih pojmova. Prvo se može promijeniti ovisno o tome što se događa u programu. Zauzvrat, konstante se postavljaju jednom i ne mijenjaju svoju vrijednost.

Konstante mogu biti korisne ako morate koristiti istu veliku vrijednost više puta. Umjesto kopiranja broja, možete jednostavno napisati naziv konstante. Na primjer, možete koristiti konstantu "Pi" za pohranjivanje Pi, što je konstantna vrijednost. Vrlo je velik i svaki put ga je prilično teško napisati ili pretraživati ​​i kopirati. I tako, dovoljno je napisati dva znaka, a okolina automatski koristi željeni broj.

Korisnik programa Excel mora deklarirati varijable ako s vremena na vrijeme treba 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 ga brzo ispraviti. Ovo je posebno korisno za one koji posluju u Sjedinjenim Državama, gdje neka roba možda uopće ne podliježe PDV-u (i ovaj se porez također razlikuje od države do države).

Vrste podataka

Svaki spremnik podataka može biti jedan od nekoliko tipova. Ovdje je tablica koja opisuje standardne vrste 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 kako biste saznali zašto je određivanje ispravne vrste podataka toliko važno.

Nije preporučljivo koristiti tip podataka koji zauzima više prostora u memoriji za male brojeve. Na primjer, za broj 1 dovoljno je koristiti tip Byte. To će imati pozitivan učinak na performanse izvršnog modula, posebno na slabim računalima. Ali ovdje je važno ne otići predaleko. Ako koristite tip podataka koji je previše kompaktan, prevelika vrijednost možda neće stati u njega.

Deklariranje konstanti i varijabli

Strogo se ne preporučuje korištenje spremnika podataka bez prethodnog deklariranja. Tada se mogu pojaviti brojni problemi, za čije izbjegavanje je potrebno napisati nekoliko malih redaka koda s nabrajanjem varijabli ili konstanti.

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

Dim Variable_Name kao cijeli broj

Variable_Name je naziv varijable. Zatim se piše As operator koji označava vrstu podataka. Umjesto stringova “Variable_Name” i “Integer”, možete umetnuti svoje ime i tip podataka.

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

Const iMaxCount = 5000

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

  1. Varijanta se puno sporije obrađuje, a ako je takvih varijabli mnogo, obrada informacija može biti značajno usporena na slabim računalima. Čini se da će te sekunde odlučiti? Ali ako morate napisati velik broj redaka koda, a zatim ga i pokrenuti na slabim računalima (koja se još uvijek prodaju, s obzirom da moderni uredski paketi zahtijevaju puno RAM-a), možete potpuno prekinuti rad. Postoje slučajevi kada je loše osmišljeno pisanje makronaredbi dovelo do zamrzavanja pametnih računala koja imaju malu količinu RAM-a i nisu dizajnirana za obavljanje složenih zadataka. 
  2. Dopuštene su tiskarske pogreške u imenima, što se može spriječiti korištenjem izjave Option Explicit, koja vam omogućuje da pronađete nedeklariranu varijablu, ako je pronađena. Ovo je jednostavan način otkrivanja pogrešaka, budući da i najmanja pogreška pri upisu uzrokuje da tumač ne može identificirati varijablu. A ako uključite način deklaracije varijabli, tumač vam jednostavno neće dopustiti pokretanje makronaredbe ako se pronađu spremnici podataka koji nisu deklarirani na samom početku modula.
  3. Izbjegavajte pogreške uzrokovane vrijednostima varijabli koje ne odgovaraju tipu podataka. Normalno, dodjeljivanje tekstualne vrijednosti cjelobrojnoj varijabli izbacit će pogrešku. Da, s jedne strane, generički tip se dodjeljuje bez deklaracije, ali ako se deklariraju unaprijed, tada se mogu izbjeći slučajne pogreške.

Stoga je, unatoč svemu, vrlo preporučljivo deklarirati 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 prilikom njezine deklaracije, ali u ovom slučaju 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. Zadani datum je 30. prosinca 1899.

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

Opcija Eksplicitna izjava

Ova izjava vam omogućuje da deklarirate sve varijable koje se koriste u VBA kodu i utvrdite prisutnost svih nedeklarisanih spremnika prije pokretanja koda. Da biste koristili ovu značajku, jednostavno napišite redak Option Explicit koda na samom vrhu koda makronaredbe.

Ako ovu izjavu morate uključiti u svoj kod svaki put, to možete učiniti pomoću posebne postavke u VBA uređivaču. Da biste omogućili ovu opciju, morate:

  1. Putem idite do razvojnog okruženja – Alati > Opcije.
  2. U prozoru koji se otvori nakon toga otvorite karticu Editor.
  3. I na kraju, potvrdite okvir pokraj stavke Zahtijevaj deklaraciju varijable.

Nakon završetka ovih koraka, kliknite na gumb "OK". 

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

Opseg konstanti i varijabli

Svaka varijabla ili konstanta ima samo ograničen opseg. Ovisi gdje ga deklarirate.

Pretpostavimo da imamo funkciju Ukupni trošak(), i koristi varijablu PDV_Stopa. Ovisno o poziciji u modulu, imat će različit opseg:

Opcija Eksplicitno

Dim sVAT_Rate As Single

Funkcija Total_Cost() kao Double

.

.

.

Kraj funkcija

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

Štoviše, ako je jedan od postupaka promijenio vrijednost varijable, tada će sljedeći također pročitati tu ispravljenu vrijednost. Ali u drugim modulima ova se varijabla još uvijek neće čitati.

Opcija Eksplicitno

Funkcija Total_Cost() kao Double

Dim sVAT_Rate As Single

   .

   .

   .

Kraj funkcija

U ovom slučaju, varijabla je deklarirana unutar procedure, a tumač će izbaciti pogreš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 korištenjem naredbe Public, koja je napisana umjesto riječi Dim.

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

Evo tablice s dobrim primjerom kako radi s konstantama i varijablama.

Opcija Eksplicitno

Javna sVAT_stopa kao pojedinačna

Javni Const iMax_Count = 5000

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

Privatna sVAT_stopa kao pojedinačna

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

Korištenje konstanti i varijabli omogućuje vam povećanje stupnja razumljivosti koda. I ako početnici općenito nemaju pitanja o tome zašto su potrebne varijable, onda postoje mnoge nejasnoće u vezi s potrebom za konstantama. I ovo pitanje izgleda, na prvi pogled, sasvim logično. Uostalom, varijablu možete deklarirati jednom i nikada je više ne promijeniti.

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

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

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

Ili sam programer može zaboraviti koje varijable smije dirati, a koje ne. To se često događa kada se kod piše nekoliko tjedana, a njegova veličina postane velika. Tijekom tog vremena vrlo je lako zaboraviti čak i što ova ili ona varijabla znači.

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

Zaključci

Varijable su bitna komponenta makro programiranja, koja vam omogućuje izvođenje složenih operacija, od izračuna do informiranja korisnika o određenim događajima ili određivanja specifičnih vrijednosti u ćelijama proračunske tablice.

Konstante bi se trebale koristiti ako programer sigurno zna da se sadržaj tih spremnika neće promijeniti u budućnosti. Preporuča se da umjesto njih ne koristite varijable, jer je moguće slučajno pogriješiti.

Ostavi odgovor