Variablat dhe konstantat në VBA

Në VBA, si në çdo gjuhë tjetër programimi, ndryshoret dhe konstantet përdoren për të ruajtur çdo vlerë. Siç nënkupton edhe emri, variablat mund të ndryshojnë, ndërsa konstantet ruajnë vlera fikse.

Për shembull, një konstante Pi ruan vlerën 3,14159265… Numri "Pi" nuk do të ndryshojë gjatë ekzekutimit të programit, por është akoma më i përshtatshëm për të ruajtur një vlerë të tillë si një konstante.

Në të njëjtën kohë, ne mund të përdorim variablin sVAT_Rate për të ruajtur normën e TVSH-së për mallrat e blera. Vlera e ndryshueshme sVAT_Rate mund të ndryshojë në varësi të produktit të blerë.

Llojet e të dhënave

Të gjitha variablat dhe konstantat janë të një lloji të caktuar të të dhënave. Tabela më poshtë rendit llojet e të dhënave të përdorura në VBA me një përshkrim dhe gamën e vlerave të mundshme:

Lloji i të dhënave MasatPërshkrimGama e vlerave
BajtBytes 1Numrat e plotë pozitivë; përdoret shpesh për të dhëna binarenga 0 të 255
BooleanBytes 2Mund të jetë ose e vërtetë ose e rremeE vërtetë apo e gabuar
numër i plotëBytes 2Numrat e plotë (pa pjesë thyesore)nga -32 në +768
GjatëBytes 4Numra të plotë të mëdhenj (pa pjesë thyesore)от -2 147 483 648 до +2 147 483 647
i vetëmBytes 4Numri i vetëm me pikë lundruese me saktësinga -3.4e38 në +3.4e38
DyfishtëBytes 8Numri i pikës lundruese me saktësi të dyfishtënga -1.8e308 në +1.8e308
MonedhëBytes 8Numri me pikë lundruese, me një numër fiks të shifrave dhjetoreот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
dataBytes 8Data dhe koha – Të dhënat e tipit Data përfaqësohen nga një numër me pikë lundruese. Pjesa e plotë e këtij numri shpreh datën, dhe pjesa thyesore shpreh kohën.nga 1 janari 100 deri më 31 dhjetor 9999
ObjektBytes 4Referenca e objektitÇdo referencë objekti
Vargpo ndryshonKomplet personazhesh. Lloji String mund të jetë me gjatësi fikse ose të ndryshueshme. Më shpesh përdoret me gjatësi të ndryshueshmeGjatësia fikse - deri në afërsisht 65 karaktere. Gjatësia e ndryshueshme - deri në afërsisht 500 miliardë karaktere
variantpo ndryshonMund të përmbajë një datë, një float ose një varg karakteresh. Ky lloj përdoret në rastet kur nuk dihet paraprakisht se çfarë lloj të dhënash do të futen.Numri – Dyfish, varg – Varg

Natyrisht, duke përdorur tabelën e mësipërme dhe duke zgjedhur llojin e duhur të të dhënave, mund ta përdorni memorien në mënyrë më ekonomike (për shembull, zgjidhni llojin e të dhënave numër i plotë në vend Gjatë or i vetëm në vend Dyfishtë). Sidoqoftë, kur përdorni lloje më kompakte të të dhënave, duhet të keni kujdes që kodi juaj të mos përpiqet të vendosë vlera të mëdha në mënyrë disproporcionale në to.

Deklarimi i variablave dhe konstantave

Shënim i përkthyesit: Duke folur për variablat në VBA, vlen të përmendet edhe një pikë shumë e rëndësishme. Nëse deklarojmë një variabël, por nuk i caktojmë asnjë vlerë, atëherë ajo inicializohet me një vlerë të paracaktuar:

• vargjet e tekstit inicializohen me vargje boshe;

• numrat — vlera 0;

• variablat e tipit Boolean - I rremë;

• datat – 30 dhjetor 1899.

Përpara se të përdoret një ndryshore ose konstante, ajo duhet të deklarohet. Për ta bërë këtë, shtoni linjën e mëposhtme të thjeshtë të kodit në makro:

Dim Имя_Переменной As Тип_Данных

Në rreshtin e mësipërm të kodit Emri i ndryshueshëm është emri i ndryshores që do të përdoret në kod, dhe Lloji i të dhënave është një nga llojet e të dhënave nga tabela e dhënë pak më herët në këtë artikull. Për shembull:

Dim sVAT_Rate Si Single Dim i Si Integer

Konstantat deklarohen në mënyrë të ngjashme, por kur deklarohen konstante, vlera e tyre duhet të tregohet menjëherë. Për shembull, si kjo:

Const iMaxCount = 5000 Const iMaxScore = 100

Nuk është e nevojshme të deklarohen variabla në Excel. Si parazgjedhje, të gjitha variablat e futura por jo të deklaruara në Excel do të kenë llojin variant dhe do të jetë në gjendje të pranojë vlerën numerike dhe tekstin.

Kështu, programuesi mund të përdorë variablin e ri në çdo kohë (edhe nëse nuk është deklaruar), dhe Excel do ta trajtojë atë si një variabël të llojit variant. Megjithatë, ka disa arsye pse kjo nuk duhet bërë:

  1. Përdorimi i memories dhe shpejtësia llogaritëse. Nëse nuk deklaroni një variabël me një tregues të llojit të të dhënave, atëherë si parazgjedhje do të vendoset në llojin variant. Ky lloj i të dhënave përdor më shumë memorie se llojet e tjera të të dhënave. Disa bajt shtesë për variabël mund të mos tingëllojnë shumë, por në praktikë, programet mund të kenë mijëra variabla (veçanërisht kur punojnë me vargje). Prandaj, memoria shtesë përdoret nga variablat si variant, krahasuar me variablat e tipit numër i plotë or i vetëm, mund të shtojë deri në një shumë të konsiderueshme. Përveç kësaj, operacionet me variabla të llojit variant ekzekutohen shumë më ngadalë sesa me variabla të llojeve të tjera, përkatësisht, një mijë variabla shtesë të llojit variant mund të ngadalësojë ndjeshëm llogaritjet.
  2. Parandalimi i gabimeve shkrimore në emrat e variablave. Nëse deklarohen të gjitha variablat, atëherë mund të përdoret deklarata VBA − Opsioni i qartë (për këtë do të flasim më vonë) për të identifikuar të gjitha variablat e padeklaruar. Kjo eliminon shfaqjen e një gabimi në program si rezultat i një emri të variablit të shkruar gabimisht. Për shembull, duke përdorur një ndryshore të quajtur sVAT_Rate, mund të bëni një gabim shtypi dhe, duke i caktuar një vlerë kësaj ndryshoreje, shkruani: “VATRate = 0,175”. Pritet që tani e tutje, variabli sVAT_Rate duhet të përmbajë vlerën 0,175 – por sigurisht që nuk ka. Nëse mënyra e deklarimit të detyrueshëm të të gjitha variablave të përdorur është aktivizuar, atëherë përpiluesi VBA do të tregojë menjëherë një gabim, pasi nuk do ta gjejë variablin VATRAte ndër ato të shpallura.
  3. Theksimi i vlerave që nuk përputhen me llojin e deklaruar të një ndryshoreje. Nëse deklaroni një variabël të një lloji të caktuar dhe përpiqeni t'i caktoni të dhëna të një lloji tjetër, do të merrni një gabim, i cili, nëse nuk korrigjohet, mund të shkaktojë dështimin e programit. Në pamje të parë, kjo mund të duket si një arsye e mirë për të mos deklaruar variablat, por në fakt, se më parë rezulton se një nga variablat mori të dhënat e gabuara që duhej të merrte - aq më mirë! Përndryshe, nëse programi vazhdon të funksionojë, rezultatet mund të jenë të pasakta dhe të papritura, dhe do të jetë shumë më e vështirë për të gjetur shkakun e gabimeve. Është gjithashtu e mundur që makroja të ekzekutohet "me sukses". Si rezultat, gabimi do të kalojë pa u vënë re dhe puna do të vazhdojë me të dhëna të pasakta!

Në këtë drejtim, është e dëshirueshme që të zbulohet një lloj i pasaktë i të dhënave dhe të korrigjohen gabime të tilla në kod sa më shpejt që të jetë e mundur. Për këto arsye, rekomandohet që të deklaroni të gjitha variablat kur shkruani një makro VBA.

Opsioni i qartë

operator Opsioni i qartë bën që të deklarohen të gjitha variablat që do të përdoren në kodin VBA dhe i shënon të gjitha variablat e padeklaruar si gabime gjatë kompilimit (para se të fillojë ekzekutimi i kodit). Aplikimi i këtij operatori nuk është i vështirë - thjesht shkruani këtë rresht në krye të skedarit VBA:

Option Explicit

Nëse dëshironi të futni gjithmonë Opsioni i qartë në krye të çdo moduli të ri VBA të krijuar, kjo mund të bëhet automatikisht. Për ta bërë këtë, duhet të aktivizoni opsionin Kërkoni deklaratë të ndryshueshme në cilësimet e redaktorit VBA.

Kjo bëhet si kjo:

  • Nga menyja Visual Basic Editor, klikoni mjete > Opcionet
  • Në dialogun që shfaqet, hapni skedën Redaktor
  • Kontrolloni kutinë Kërkoni deklaratë të ndryshueshme dhe shtypni OK

Kur aktivizohet, vargu Opsioni i qartë do të futet automatikisht në fillim të çdo moduli të ri të krijuar.

Shtrirja e variablave dhe konstanteve

Çdo variabël ose konstante e deklaruar ka shtrirjen e vet të kufizuar, domethënë një pjesë të kufizuar të programit në të cilin ekziston kjo ndryshore. Shtrirja varet nga vendi ku është bërë deklarimi i ndryshores ose konstantës. Merrni, për shembull, variablin sVAT_Rate, e cila përdoret në funksion Totali_Kosto. Tabela e mëposhtme diskuton dy opsione për shtrirjen e ndryshueshme sVAT_Ratedeklaruar në dy pozicione të ndryshme në modul:

Opsioni eksplicit Dim sVAT_Rate As Single Function Total_Cost() Si Double ... Funksioni Fund
Nëse ndryshorja sVAT_Rate deklaruar në fillim të modulit, atëherë qëllimi i kësaj ndryshore do të jetë i gjithë moduli (dmth. ndryshorja sVAT_Rate do të njihet nga të gjitha procedurat në këtë modul).

Prandaj, nëse në funksion Totali_Kosto variabël sVAT_Rate do t'i caktohet një vlerë, atëherë funksioni tjetër i ekzekutuar brenda të njëjtit modul do të përdorë variablin sVAT_Rate me të njëjtin kuptim.

Sidoqoftë, nëse thirret ndonjë funksion i vendosur në një modul tjetër, atëherë për të ndryshorja sVAT_Rate nuk do të dihet.

Opsioni i funksionit eksplicit Total_Cost() Si Double Dim sVAT_Rate As Single ... Funksioni i fundit
Nëse ndryshorja sVAT_Rate deklaruar në fillim të funksionit Totali_Kosto, atëherë fushëveprimi i tij do të kufizohet vetëm në këtë funksion (dmth. brenda funksionit Totali_Kosto, mund të përdorni variablin sVAT_Rate, por jo jashtë).

Kur përpiqeni të përdorni sVAT_Rate në një procedurë tjetër, përpiluesi VBA do të raportojë një gabim sepse kjo ndryshore nuk është deklaruar jashtë funksionit Totali_Kosto (me kusht që të përdoret operatori Opsioni i qartë).

Në shembullin e treguar më sipër, ndryshorja deklarohet në nivelin e modulit me fjalën kyçe i zbehtë. Megjithatë, mund të jetë e nevojshme që variablat e deklaruar të mund të përdoren në module të tjera. Në raste të tilla, për të deklaruar një ndryshore në vend të një fjale kyçe i zbehtë duhet të përdoret fjala kyçe Publik.

Nga rruga, për të deklaruar një ndryshore në nivelin e modulit, në vend të fjalës kyçe i zbehtë mund të përdoret fjala kyçe privat, që tregon se kjo variabël është menduar për përdorim vetëm në modulin aktual.

Ju gjithashtu mund të përdorni fjalë kyçe për të deklaruar konstante. Publik и privat, por jo në vend të fjalës kyçe Konst, së bashku me të.

Shembujt e mëposhtëm tregojnë përdorimin e fjalëve kyçe Publik и privat aplikuar në variabla dhe konstante.

Opsioni i qartë publik sVAT_Rate Si Const Single Public iMax_Count = 5000 ...    
Në këtë shembull, fjala kyçe Publik përdoret për të deklaruar një ndryshore sVAT_Rate dhe konstante iMax_Count. Shtrirja e elementeve të deklaruara në këtë mënyrë do të jetë i gjithë projekti aktual.

Kjo do të thotë se sVAT_Rate и iMax_Count do të jetë i disponueshëm në çdo modul projekti.

Opsioni eksplicit Private sVAT_Rate Si Const Single Private iMax_Count = 5000 ...    
Në këtë shembull, për të deklaruar një ndryshore sVAT_Rate dhe konstante iMax_Count fjalë kyçe e përdorur privat. Fushëveprimi i këtyre elementeve është moduli aktual.

Kjo do të thotë se sVAT_Rate и iMax_Count do të jetë i disponueshëm në të gjitha procedurat e modulit aktual, por nuk do të jetë i disponueshëm për procedurat në modulet e tjera.

Lini një Përgjigju