Mga variable ug kanunay sa VBA

Sa VBA, sama sa bisan unsang ubang programming language, ang mga variable ug constants gigamit sa pagtipig sa bisan unsang mga kantidad. Sama sa gipasabot sa ngalan, ang mga variable mahimong mausab, samtang ang mga constants nagtipig sa mga fixed values.

Pananglitan, usa ka kanunay Pi nagtipig sa kantidad nga 3,14159265… Ang numero nga "Pi" dili mausab sa panahon sa pagpatuman sa programa, apan mas sayon ​​​​ang pagtipig sa ingon nga bili isip usa ka makanunayon.

Sa samang higayon, mahimo natong gamiton ang variable sVAT_Rate sa pagtipig sa VAT rate sa gipalit nga mga butang. Variable nga bili sVAT_Rate mahimong magkalahi depende sa gipalit nga produkto.

Mga Matang sa Data

Ang tanan nga mga baryable ug mga constant kay sa usa ka partikular nga tipo sa datos. Ang lamesa sa ubos naglista sa mga tipo sa datos nga gigamit sa VBA nga adunay usa ka paghulagway ug sakup sa posible nga mga kantidad:

Klase sa datos SizeDescriptionSakop sa mga mithi
ByteAng 1 baitPositibo nga integer; sagad gigamit alang sa binary datagikan sa 0 ngadto sa 255
BooleanAng 2 baitMahimong Tinuod o BakakTinuod o Bakak
IntegerAng 2 baitTibuok nga mga numero (walay fractional nga bahin)gikan sa -32 hangtod +768
LongAng 4 baitDagko nga integer (walay fractional nga bahin)от -2 147 483 648 до +2 147 483 647
kaAng 4 baitSingle precision floating point nga numerogikan sa -3.4e38 ngadto sa +3.4e38
doubleAng 8 baitDoble nga katukma nga floating point nga numerogikan sa -1.8e308 ngadto sa +1.8e308
currencyAng 8 baitNumero nga naglutaw nga punto, nga adunay usa ka piho nga gidaghanon sa mga decimal nga lugarот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
PetsaAng 8 baitPetsa ug oras - Ang datos sa tipo nga Petsa girepresentahan sa usa ka floating point nga numero. Ang integer nga bahin niini nga numero nagpahayag sa petsa, ug ang fractional nga bahin nagpahayag sa oras.gikan sa Enero 1, 100 hangtod sa Disyembre 31, 9999
butangAng 4 baitReperensya sa butangBisan unsang butang nga pakisayran
hilonagbag-oSet sa karakter. Ang String type mahimong fixed o variable length. Mas sagad nga gigamit nga adunay variable nga gitas-onNaayo nga gitas-on - hangtod sa gibana-bana nga 65 nga mga karakter. Variable nga gitas-on - hangtod sa gibana-bana nga 500 bilyon nga mga karakter
nga bersyonnagbag-oMahimong adunay usa ka petsa, usa ka float, o usa ka string sa karakter. Kini nga tipo gigamit sa mga kaso diin wala mahibal-an daan kung unsang klase sa datos ang isulod.Numero - Doble, kuwerdas - Kuwerdas

Dayag, gamit ang lamesa sa ibabaw ug pagpili sa husto nga tipo sa datos, mahimo nimong gamiton ang memorya nga mas ekonomikanhon (pananglitan, pilia ang tipo sa datos Integer sa baylo Long or ka sa baylo double). Bisan pa, kung mogamit labi ka mga compact nga tipo sa datos, kinahanglan nimo nga mag-amping nga ang imong code dili mosulay sa pagpahiangay sa dili parehas nga dagkong mga kantidad sa kanila.

Pagdeklara sa mga Variable ug Constants

Mubo nga sulat sa maghuhubad: Naghisgot bahin sa mga variable sa VBA, angay nga hisgutan ang usa ka labi ka hinungdanon nga punto. Kung nagpahayag kami og usa ka variable apan wala mag-assign sa bisan unsang kantidad niini, nan kini gisugdan sa usa ka default nga kantidad:

• ang mga kuwerdas sa teksto gisugdan sa walay sulod nga mga kuwerdas;

• mga numero - bili 0;

• matang variables Boolean — Bakak;

• mga petsa – Disyembre 30, 1899.

Sa dili pa magamit ang usa ka variable o kanunay, kinahanglan kini ipahayag. Aron mahimo kini, idugang ang mosunod nga yano nga linya sa code sa macro:

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

Sa ibabaw nga linya sa code Variable_name mao ang ngalan sa variable nga gamiton sa code, ug Data_Type mao ang usa sa mga tipo sa datos gikan sa lamesa nga gihatag sa sayo pa niini nga artikulo. Pananglitan:

Dim sVAT_Rate Ingon Usa ka Dim ug Ingon nga Integer

Ang mga makanunayon gideklarar nga parehas, apan kung nagpahayag nga mga makanunayon, ang ilang kantidad kinahanglan nga ipakita dayon. Pananglitan, sama niini:

Const iMaxCount = 5000 Const iMaxScore = 100

Dili kinahanglan nga ipahayag ang mga variable sa Excel. Sa kasagaran, ang tanan nga gisulod apan wala gipahayag nga mga variable sa Excel adunay tipo nga bersyon ug makadawat sa numeric ug text value.

Sa ingon, ang programmer mahimong mogamit sa bag-ong variable sa bisan unsang oras (bisan kung wala kini gipahayag), ug ang Excel magtratar niini ingon usa ka variable nga tipo. nga bersyon. Bisan pa, adunay daghang mga hinungdan ngano nga dili kini buhaton:

  1. Paggamit sa memorya ug katulin sa pagkalkula. Kung dili nimo ipahayag ang usa ka variable nga adunay timailhan sa tipo sa datos, nan pinaagi sa default kini itakda sa tipo nga bersyon. Kini nga tipo sa datos naggamit ug daghang panumduman kaysa ubang mga tipo sa datos. Ang pipila ka dugang nga mga byte matag variable tingali dili kaayo paminawon, apan sa praktis, ang mga programa mahimong adunay liboan ka mga variable (ilabi na kung nagtrabaho uban ang mga arrays). Busa, ang dugang nga panumduman nga gigamit sa mga variable sama sa nga bersyon, itandi sa mga variable sa tipo Integer or ka, mahimong makadugang sa usa ka mahinungdanon nga kantidad. Dugang pa, ang mga operasyon nga adunay mga variable nga tipo nga bersyon gipatuman labi ka hinay kaysa sa mga variable sa ubang mga tipo, sa tinuud, usa ka dugang nga libo nga mga variable sa tipo nga bersyon makapahinay pag-ayo sa mga kalkulasyon.
  2. Paglikay sa mga typo sa lain-laing mga ngalan. Kung ang tanan nga mga variable gipahayag, nan ang VBA nga pahayag mahimong magamit - Eksplisit nga Opsyon (atong hisgutan kini sa ulahi) aron mailhan ang tanan nga wala gipahayag nga mga variable. Giwagtang niini ang dagway sa usa ka sayup sa programa ingon usa ka sangputanan sa usa ka sayup nga gisulat nga variable nga ngalan. Pananglitan, gamit ang usa ka variable nga ginganlan sVAT_Rate, makahimo ka og typo ug, paghatag og bili niini nga variable, isulat: "VATRate = 0,175". Gilauman nga gikan karon, ang variable sVAT_Rate kinahanglan nga adunay kantidad nga 0,175 - apan siyempre dili. Kung ang mode sa mandatory nga deklarasyon sa tanan nga gigamit nga mga variable gipalihok, nan ang VBA compiler magpakita dayon sa usa ka sayup, tungod kay dili kini makit-an ang variable VATRrate taliwala sa mga gipahibalo.
  3. Pag-highlight sa mga kantidad nga dili motakdo sa gipahayag nga tipo sa usa ka variable. Kung magdeklara ka usa ka variable sa usa ka piho nga tipo ug mosulay sa pag-assign sa datos nga lahi nga tipo niini, makakuha ka usa ka sayup, nga, kung dili matul-id, mahimong hinungdan sa pag-crash sa programa. Sa una nga pagtan-aw, kini ingon og usa ka maayong rason nga dili ipahayag ang mga variable, apan sa tinuud, kaysa sa wala pa kini nahimo nga usa sa mga variable ang nakadawat sa sayup nga datos nga kinahanglan nga madawat - labi ka maayo! Kung dili, kung ang programa magpadayon sa pagdagan, ang mga sangputanan mahimong dili husto ug wala damha, ug labi ka lisud ang pagpangita sa hinungdan sa mga sayup. Posible usab nga ang macro "malampuson" nga ipatuman. Ingon usa ka sangputanan, ang sayup dili mamatikdan ug ang trabaho magpadayon sa dili husto nga datos!

Niining bahina, gitinguha nga makit-an ang usa ka sayup nga tipo sa datos ug matul-id ang ingon nga mga sayup sa code sa sayo nga mahimo. Tungod niini nga mga hinungdan, girekomenda nga imong ipahayag ang tanan nga mga variable sa pagsulat sa usa ka VBA macro.

Eksplisit nga Opsyon

Operator Eksplisit nga Opsyon hinungdan nga ang tanan nga mga variable nga gamiton sa VBA code nga ipahayag, ug ang tanan nga wala gipahayag nga mga variable ingon mga sayup sa panahon sa pag-compile (sa wala pa magsugod ang pagpatuman sa code). Ang pagpadapat niini nga operator dili lisud - isulat lang kini nga linya sa pinakataas nga bahin sa VBA file:

Option Explicit

Kung gusto nimo nga isulod kanunay Eksplisit nga Opsyon sa ibabaw sa matag bag-ong VBA module nga gihimo, kini mahimo nga awtomatiko. Aron mahimo kini, kinahanglan nimo nga palihokon ang kapilian Nagkinahanglan ug Variable Deklarasyon sa mga setting sa VBA editor.

Kini gibuhat sama niini:

  • Gikan sa Visual Basic Editor menu, i-klik mga himan > mga kapilian
  • Sa dialog nga makita, ablihi ang tab editor
  • Susiha ang kahon Nagkinahanglan ug Variable Deklarasyon ug sa press OK

Kung mahimo, ang hilo Eksplisit nga Opsyon awtomatik nga isulod sa sinugdanan sa matag bag-ong module nga gihimo.

Sakop sa mga Variable ug Constants

Ang matag gipahayag nga variable o kanunay adunay kaugalingon nga limitado nga kasangkaran, nga mao, usa ka limitado nga bahin sa programa diin kini nga variable naglungtad. Ang sakup nagdepende kung diin gihimo ang deklarasyon sa variable o kanunay. Tagda, pananglitan, ang variable sVAT_Rate, nga gigamit sa function Kinatibuk-ang gasto. Ang mosunod nga talaan naghisgot sa duha ka opsyon alang sa variable scoping sVAT_Rategipahayag sa duha ka lain-laing mga posisyon sa module:

Opsyon Tin-aw nga Dim sVAT_Rate Ingon Usa ka Function Total_Cost() Ingon Doble ... Katapusan nga Function
Kung ang variable sVAT_Rate gipahayag sa sinugdanan sa module, unya ang sakup niini nga variable mao ang tibuuk nga module (ie ang variable sVAT_Rate mailhan sa tanang pamaagi niini nga module).

Busa, kon sa function Kinatibuk-ang gasto lainlain sVAT_Rate hatagan ug pipila ka kantidad, unya ang sunod nga function nga gipatuman sulod sa parehas nga module mogamit sa variable sVAT_Rate sa samang kahulogan.

Bisan pa, kung ang usa ka function nga nahimutang sa lain nga module gitawag, nan alang niini ang variable sVAT_Rate dili mahibaloan.

Opsyon Tin-aw nga Function Total_Cost() Ingon Dobleng Dim sVAT_Rate Ingon Single ... Katapusan nga Function
Kung ang variable sVAT_Rate gipahayag sa sinugdanan sa function Kinatibuk-ang gasto, nan ang sakup niini limitado lamang sa kini nga function (ie sulod sa function Kinatibuk-ang gasto, mahimo nimong gamiton ang variable sVAT_Rate, apan dili sa gawas).

Sa diha nga naningkamot sa paggamit sVAT_Rate sa lain nga pamaagi, ang VBA compiler magreport sa usa ka sayup tungod kay kini nga variable wala gipahayag sa gawas sa function Kinatibuk-ang gasto (basta ang operator gigamit Eksplisit nga Opsyon).

Sa panig-ingnan nga gipakita sa ibabaw, ang variable gipahayag sa lebel sa module nga adunay keyword Malaw-ay. Bisan pa, mahimo’g kinahanglan nga ang gipahayag nga mga variable mahimong magamit sa ubang mga module. Sa ingon nga mga kaso, aron ipahayag ang usa ka variable imbes usa ka keyword Malaw-ay kinahanglan gamiton ang keyword Public.

Pinaagi sa dalan, aron ipahayag ang usa ka variable sa lebel sa module, imbis sa keyword Malaw-ay keyword pwede gamiton Private, nga nagpakita nga kini nga variable gituyo alang sa paggamit lamang sa kasamtangan nga module.

Mahimo usab nimo gamiton ang mga keyword aron ipahayag ang mga kanunay. Public и Private, apan dili kay sa keyword Gipasalig usab ni Const, uban niini.

Ang mosunod nga mga pananglitan nagpakita sa paggamit sa mga keyword Public и Private gigamit sa mga variable ug constants.

Opsyon Dayag nga Publiko sVAT_Rate Ingon Usa ka Publiko Const iMax_Count = 5000 ...    
Niini nga pananglitan, ang keyword Public gigamit sa pagpahayag sa usa ka variable sVAT_Rate ug mga makanunayon iMax_Count. Ang sakup sa mga elemento nga gipahayag sa ingon niini nga paagi mao ang tibuuk nga proyekto karon.

Kini nagpasabot niana sVAT_Rate и iMax_Count magamit sa bisan unsang module sa proyekto.

Opsyon Dayag nga Pribadong sVAT_Rate Ingon Usa ka Pribadong Const iMax_Count = 5000 ...    
Niini nga pananglitan, aron ipahayag ang usa ka variable sVAT_Rate ug mga makanunayon iMax_Count gigamit nga keyword Private. Ang sakup niini nga mga elemento mao ang karon nga module.

Kini nagpasabot niana sVAT_Rate и iMax_Count mahimong magamit sa tanan nga mga pamaagi sa karon nga module, apan dili magamit sa mga pamaagi sa ubang mga module.

Leave sa usa ka Reply