Mga variable at constant sa VBA

Sa VBA, tulad ng sa anumang iba pang programming language, ang mga variable at constant ay ginagamit upang mag-imbak ng anumang mga halaga. Gaya ng ipinahihiwatig ng pangalan, maaaring magbago ang mga variable, habang ang mga constant ay nag-iimbak ng mga nakapirming halaga.

Halimbawa, isang pare-pareho Pi nag-iimbak ng halaga na 3,14159265… Ang numerong "Pi" ay hindi magbabago sa panahon ng pagpapatupad ng programa, ngunit mas maginhawa pa rin na mag-imbak ng ganoong halaga bilang isang pare-pareho.

Kasabay nito, maaari nating gamitin ang variable sVAT_Rate upang iimbak ang rate ng VAT sa mga biniling kalakal. Variable value sVAT_Rate maaaring mag-iba depende sa produktong binili.

Uri ng data

Ang lahat ng mga variable at constant ay may partikular na uri ng data. Inililista ng talahanayan sa ibaba ang mga uri ng data na ginamit sa VBA na may paglalarawan at hanay ng mga posibleng halaga:

Uri ng datos lakipaglalarawanSaklaw ng mga halaga
Byte1 bytesMga positibong integer; kadalasang ginagamit para sa binary datamula 0 sa 255
boolean2 bytesMaaaring Tama o MaliTama o mali
Integer2 bytesBuong numero (walang fractional na bahagi)mula -32 hanggang +768
Mahaba4 bytesMalaking integer (walang fractional na bahagi)от -2 147 483 648 до +2 147 483 647
solong4 bytesSingle precision floating point numbermula -3.4e38 hanggang +3.4e38
Double8 bytesDouble precision floating point na numeromula -1.8e308 hanggang +1.8e308
Pera8 bytesNumero ng floating point, na may nakapirming bilang ng mga decimal na lugarот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
petsa8 bytesPetsa at oras – Ang uri ng data na Petsa ay kinakatawan ng isang numero ng floating point. Ang integer na bahagi ng numerong ito ay nagpapahayag ng petsa, at ang fractional na bahagi ay nagpapahayag ng oras.mula Enero 1, 100 hanggang Disyembre 31, 9999
Bagay4 bytesSanggunian ng bagayAnumang object reference
Pisinagbabagoset ng character. Ang uri ng String ay maaaring may fixed o variable na haba. Mas karaniwang ginagamit na may variable na habaNakapirming haba – hanggang sa humigit-kumulang 65 character. Variable length – hanggang sa humigit-kumulang 500 bilyong character
baryantenagbabagoMaaaring naglalaman ng petsa, float, o string ng character. Ginagamit ang ganitong uri sa mga kaso kung saan hindi alam nang maaga kung anong uri ng data ang ilalagay.Numero – Doble, string – String

Malinaw, gamit ang talahanayan sa itaas at pagpili ng tamang uri ng data, maaari mong gamitin ang memorya nang mas matipid (halimbawa, piliin ang uri ng data Integer sa halip Mahaba or solong sa halip Double). Gayunpaman, kapag gumagamit ng mga mas compact na uri ng data, kailangan mong mag-ingat na ang iyong code ay hindi subukang magkasya sa mga hindi katumbas na malalaking halaga sa kanila.

Pagdedeklara ng mga Variable at Constant

Tala ng Tagasalin: Sa pagsasalita tungkol sa mga variable sa VBA, ito ay nagkakahalaga ng pagbanggit ng isa pang napakahalagang punto. Kung nagdedeklara kami ng isang variable ngunit hindi nagtalaga ng anumang halaga dito, pagkatapos ito ay sinisimulan ng isang default na halaga:

• ang mga string ng teksto ay sinisimulan gamit ang mga walang laman na string;

• mga numero — halaga 0;

• uri ng mga variable boolean — Mali;

• mga petsa – Disyembre 30, 1899.

Bago magamit ang isang variable o pare-pareho, dapat itong ideklara. Upang gawin ito, idagdag ang sumusunod na simpleng linya ng code sa macro:

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

Sa itaas na linya ng code Variable_name ay ang pangalan ng variable na gagamitin sa code, at Uri ng datos ay isa sa mga uri ng data mula sa talahanayan na ibinigay nang mas maaga sa artikulong ito. Halimbawa:

Dim sVAT_Rate Bilang Single Dim i Bilang Integer

Ang mga constant ay idineklara nang katulad, ngunit kapag nagdedeklara ng mga constant, ang kanilang halaga ay dapat na agad na ipahiwatig. Halimbawa, tulad nito:

Const iMaxCount = 5000 Const iMaxScore = 100

Hindi kinakailangang magdeklara ng mga variable sa Excel. Bilang default, lahat ng ipinasok ngunit hindi ipinahayag na mga variable sa Excel ay magkakaroon ng uri baryante at magagawang tanggapin ang parehong numeric at text value.

Kaya, maaaring gamitin ng programmer ang bagong variable anumang oras (kahit na hindi pa ito idineklara), at ituturing ito ng Excel bilang isang variable ng uri. baryante. Gayunpaman, may ilang mga dahilan kung bakit hindi ito dapat gawin:

  1. Paggamit ng memorya at bilis ng computational. Kung hindi mo idineklara ang isang variable na may indikasyon ng uri ng data, pagkatapos ay sa pamamagitan ng default ito ay itatakda sa uri baryante. Ang uri ng data na ito ay gumagamit ng mas maraming memorya kaysa sa iba pang mga uri ng data. Ang ilang dagdag na byte bawat variable ay maaaring hindi gaanong tunog, ngunit sa pagsasanay, ang mga programa ay maaaring magkaroon ng libu-libong mga variable (lalo na kapag nagtatrabaho sa mga array). Samakatuwid, ang dagdag na memorya na ginagamit ng mga variable tulad ng baryante, kumpara sa mga variable ng uri Integer or solong, ay maaaring magdagdag ng hanggang sa isang malaking halaga. Bilang karagdagan, ang mga pagpapatakbo na may mga variable ng uri baryante ay isinasagawa nang mas mabagal kaysa sa mga variable ng iba pang mga uri, ayon sa pagkakabanggit, isang dagdag na libong mga variable ng uri baryante maaaring makabuluhang pabagalin ang mga kalkulasyon.
  2. Pag-iwas sa mga typo sa mga variable na pangalan. Kung ang lahat ng mga variable ay idineklara, pagkatapos ay ang VBA statement ay maaaring gamitin − Malinaw na Opsyon (pag-uusapan natin ito sa ibang pagkakataon) para matukoy ang lahat ng hindi nadeklarang variable. Inaalis nito ang paglitaw ng isang error sa programa bilang isang resulta ng isang maling nakasulat na pangalan ng variable. Halimbawa, gamit ang isang variable na pinangalanan sVAT_Rate, maaari kang gumawa ng typo at, kapag nagtatalaga ng value sa variable na ito, isulat ang: “VATRate = 0,175”. Inaasahan na mula ngayon, ang variable sVAT_Rate dapat maglaman ng halaga na 0,175 – ngunit siyempre hindi. Kung pinagana ang mode ng mandatoryong deklarasyon ng lahat ng ginamit na variable, ang VBA compiler ay agad na magsasaad ng error, dahil hindi nito mahahanap ang variable. VATRrate kabilang sa mga inihayag.
  3. Ang pag-highlight ng mga halaga na hindi tumutugma sa ipinahayag na uri ng isang variable. Kung magdedeklara ka ng variable ng isang partikular na uri at subukang magtalaga ng data ng ibang uri dito, magkakaroon ka ng error, na, kung hindi naitama, ay maaaring maging sanhi ng pag-crash ng program. Sa unang sulyap, ito ay maaaring mukhang isang magandang dahilan upang hindi magdeklara ng mga variable, ngunit sa katunayan, kaysa sa lumalabas na ang isa sa mga variable ay nakatanggap ng maling data na dapat itong matanggap - mas mabuti! Kung hindi, kung patuloy na tatakbo ang programa, maaaring mali at hindi inaasahan ang mga resulta, at magiging mas mahirap hanapin ang sanhi ng mga error. Posible rin na ang macro ay "matagumpay" na maisakatuparan. Bilang resulta, ang error ay hindi mapapansin at ang trabaho ay magpapatuloy sa maling data!

Sa pagsasaalang-alang na ito, ito ay kanais-nais na makita ang isang hindi tamang uri ng data at itama ang mga naturang error sa code sa lalong madaling panahon. Para sa mga kadahilanang ito, inirerekomenda na ideklara mo ang lahat ng mga variable kapag nagsusulat ng VBA macro.

Malinaw na Opsyon

Opereytor Malinaw na Opsyon nagiging sanhi ng lahat ng mga variable na gagamitin sa VBA code upang ideklara, at i-flag ang lahat ng hindi idineklara na mga variable bilang mga error sa panahon ng compilation (bago magsimula ang code execution). Ang paglalapat ng operator na ito ay hindi mahirap – isulat lamang ang linyang ito sa pinakatuktok ng VBA file:

Option Explicit

Kung gusto mo laging isingit Malinaw na Opsyon sa tuktok ng bawat bagong VBA module na nilikha, maaari itong awtomatikong gawin. Upang gawin ito, kailangan mong paganahin ang pagpipilian Nangangailangan ng Variable Declaration sa mga setting ng VBA editor.

Ginagawa ito tulad nito:

  • Mula sa Visual Basic Editor menu, i-click mga kasangkapan > Options
  • Sa dialog na lalabas, buksan ang tab Editor
  • Lagyan ng tsek ang kahon Nangangailangan ng Variable Declaration at pindutin ang OK

Kapag pinagana, ang string Malinaw na Opsyon ay awtomatikong ilalagay sa simula ng bawat bagong module na nilikha.

Saklaw ng mga Variable at Constant

Ang bawat ipinahayag na variable o pare-pareho ay may sariling limitadong saklaw, iyon ay, isang limitadong bahagi ng programa kung saan umiiral ang variable na ito. Ang saklaw ay depende sa kung saan ginawa ang deklarasyon ng variable o pare-pareho. Kunin, halimbawa, ang variable sVAT_Rate, na ginagamit sa function Kabuuang_Gastos. Tinatalakay ng sumusunod na talahanayan ang dalawang opsyon para sa variable scoping sVAT_Rateipinahayag sa dalawang magkaibang posisyon sa modyul:

Opsyon tahasang Dim sVAT_Rate Bilang Isang Function Total_Cost() Bilang Doble ... End Function
Kung ang variable sVAT_Rate ipinahayag sa pinakasimula ng module, kung gayon ang saklaw ng variable na ito ay ang buong module (ibig sabihin ang variable sVAT_Rate makikilala ng lahat ng mga pamamaraan sa modyul na ito).

Samakatuwid, kung sa function Kabuuang_Gastos nagbabago sVAT_Rate ay bibigyan ng ilang halaga, pagkatapos ay ang susunod na function na naisakatuparan sa loob ng parehong module ay gagamit ng variable sVAT_Rate na may parehong kahulugan.

Gayunpaman, kung ang ilang function na matatagpuan sa isa pang module ay tinatawag, pagkatapos ay para dito ang variable sVAT_Rate hindi malalaman.

Opsyon tahasang Function Total_Cost() Bilang Double Dim sVAT_Rate Bilang Single ... End Function
Kung ang variable sVAT_Rate ipinahayag sa simula ng pagpapaandar Kabuuang_Gastos, kung gayon ang saklaw nito ay limitado lamang sa function na ito (ibig sabihin, sa loob ng function Kabuuang_Gastos, maaari mong gamitin ang variable sVAT_Rate, ngunit hindi sa labas).

Kapag sinusubukang gamitin sVAT_Rate sa isa pang pamamaraan, ang VBA compiler ay mag-uulat ng isang error dahil ang variable na ito ay hindi idineklara sa labas ng function Kabuuang_Gastos (sa kondisyon na ang operator ay ginagamit Malinaw na Opsyon).

Sa halimbawang ipinakita sa itaas, ang variable ay idineklara sa antas ng module kasama ang keyword Dim. Gayunpaman, maaaring kailanganin na ang mga ipinahayag na variable ay maaaring gamitin sa iba pang mga module. Sa ganitong mga kaso, upang magdeklara ng isang variable sa halip na isang keyword Dim dapat gamitin ang keyword Publiko.

Sa pamamagitan ng paraan, upang magdeklara ng isang variable sa antas ng module, sa halip na ang keyword Dim maaaring gamitin ang keyword pribado, na nagpapahiwatig na ang variable na ito ay inilaan para sa paggamit lamang sa kasalukuyang module.

Maaari ka ring gumamit ng mga keyword upang magdeklara ng mga constant. Publiko и pribado, ngunit hindi sa halip na ang keyword Si Const, kasama nito.

Ang mga sumusunod na halimbawa ay nagpapakita ng paggamit ng mga keyword Publiko и pribado inilapat sa mga variable at constants.

Opsyon tahasang Pampublikong sVAT_Rate Bilang Isang Pampublikong Const iMax_Count = 5000 ...    
Sa halimbawang ito, ang keyword Publiko ginagamit sa pagdeklara ng variable sVAT_Rate at mga pare-pareho iMax_Count. Ang saklaw ng mga elementong idineklara sa ganitong paraan ay ang buong kasalukuyang proyekto.

Nangangahulugan ito na sVAT_Rate и iMax_Count ay magagamit sa anumang module ng proyekto.

Opsyon tahasang Pribadong sVAT_Rate Bilang Single Pribadong Const iMax_Count = 5000 ...    
Sa halimbawang ito, upang magdeklara ng variable sVAT_Rate at mga pare-pareho iMax_Count ginamit na keyword pribado. Ang saklaw ng mga elementong ito ay ang kasalukuyang module.

Nangangahulugan ito na sVAT_Rate и iMax_Count ay magagamit sa lahat ng mga pamamaraan ng kasalukuyang module, ngunit hindi magagamit sa mga pamamaraan sa ibang mga module.

Mag-iwan ng Sagot