Awọn oniyipada ati awọn iduro ni VBA

Ni VBA, gẹgẹbi ni eyikeyi ede siseto miiran, awọn oniyipada ati awọn iduro ni a lo lati tọju eyikeyi awọn iye. Gẹgẹbi orukọ naa ṣe tumọ si, awọn oniyipada le yipada, lakoko ti awọn alaiṣeduro tọju awọn iye ti o wa titi.

Fun apẹẹrẹ, kan ibakan Pi tọju iye 3,14159265… Nọmba “Pi” kii yoo yipada lakoko ipaniyan ti eto naa, ṣugbọn o tun rọrun diẹ sii lati tọju iru iye bi igbagbogbo.

Ni akoko kanna, a le lo oniyipada Oṣuwọn sVAT lati tọju oṣuwọn VAT lori awọn ọja ti o ra. Ayipada iye Oṣuwọn sVAT le yatọ si da lori ọja ti o ra.

Awọn Orisi data

Gbogbo awọn oniyipada ati awọn iduro jẹ ti iru data kan pato. Tabili ti o wa ni isalẹ ṣe atokọ awọn oriṣi data ti a lo ninu VBA pẹlu apejuwe ati ibiti o ti ṣee ṣe awọn iye:

Iru data iwọnApejuweIbiti awọn iye
baitiAwọn baiti 1Awọn nọmba ti o dara; nigbagbogbo lo fun data alakomejilati 0 to 255
BolianuAwọn baiti 2Le jẹ boya Otitọ tabi EkeOtitọ tabi Eke
odidiAwọn baiti 2Gbogbo awọn nọmba (ko si apakan ida)lati -32 si +768
LongAwọn baiti 4odidi nla (ko si apakan ida)от -2 147 483 648 до +2 147 483 647
nikanAwọn baiti 4Nikan konge lilefoofo ojuami nọmbalati -3.4e38 to + 3.4e38
DoubleAwọn baiti 8Double konge lilefoofo ojuami nọmbalati -1.8e308 to + 1.8e308
owoAwọn baiti 8Nọmba aaye lilefoofo, pẹlu nọmba ti o wa titi ti awọn aaye eleemewaот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
ọjọAwọn baiti 8Ọjọ ati akoko – Data iru Ọjọ jẹ aṣoju nipasẹ nọmba aaye lilefoofo kan. Apa odidi ti nọmba yii n ṣalaye ọjọ, ati apakan ida n ṣalaye akoko naa.lati January 1, 100 si December 31, 9999
ohunAwọn baiti 4Itọkasi nkanEyikeyi itọkasi ohun
okunn yipadaEto kikọ. Iru Okun le jẹ ti ipari tabi ipari oniyipada. Diẹ sii ti a lo pẹlu gigun oniyipadaGigun ti o wa titi - to isunmọ awọn ohun kikọ 65. Ayipada gigun – to to 500 bilionu awọn kikọ
iyatọn yipadaLe ni ọjọ kan ninu, leefofo loju omi, tabi okun ohun kikọ kan. Iru iru yii ni a lo ni awọn ọran nibiti a ko mọ tẹlẹ iru iru data ti yoo tẹ sii.Nọmba - Double, okun - Okun

O han ni, ni lilo tabili loke ati yiyan iru data to tọ, o le lo iranti diẹ sii ni ọrọ-aje (fun apẹẹrẹ, yan iru data naa. odidi dipo Long or nikan dipo Double). Bibẹẹkọ, nigba lilo awọn iru data iwapọ diẹ sii, o nilo lati ṣọra pe koodu rẹ ko gbiyanju lati baamu awọn iye nla ti aibikita sinu wọn.

Ti n kede Awọn iyipada ati Awọn aiṣedeede

Akiyesi Olutumọ: Nigbati on soro nipa awọn oniyipada ni VBA, o tọ lati darukọ aaye pataki diẹ sii. Ti a ba kede oniyipada ṣugbọn ko fi iye eyikeyi si i, lẹhinna o jẹ ipilẹṣẹ pẹlu iye aiyipada:

• awọn gbolohun ọrọ ti wa ni ipilẹṣẹ pẹlu awọn gbolohun ọrọ ti o ṣofo;

• awọn nọmba - iye 0;

• iru oniyipada Bolianu - Eke;

• ọjọ – December 30, 1899.

Ṣaaju ki o to le lo oniyipada tabi igbagbogbo, o gbọdọ kede. Lati ṣe eyi, ṣafikun laini ti o rọrun ti koodu si Makiro:

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

Ni awọn loke ila ti koodu Orukọ iyatọ ni awọn orukọ ti awọn oniyipada ti yoo ṣee lo ninu awọn koodu, ati Data_Iru jẹ ọkan ninu awọn oriṣi data lati tabili ti a fun ni diẹ sẹhin ni nkan yii. Fun apere:

Dim sVAT_Rate Bi Single Dim i Bi odidi

Awọn ibakan jẹ ikede bakanna, ṣugbọn nigbati o ba n ṣalaye awọn iduro, iye wọn gbọdọ jẹ itọkasi lẹsẹkẹsẹ. Fun apẹẹrẹ, bii eyi:

Const iMaxCount = 5000 Const iMaxScore = 100

Ko ṣe pataki lati sọ awọn oniyipada ni Excel. Nipa aiyipada, gbogbo awọn ti a tẹ ṣugbọn ti a ko sọ awọn oniyipada ni Excel yoo ni iru iyatọ ati pe yoo ni anfani lati gba mejeeji nọmba ati iye ọrọ.

Nitorinaa, olupilẹṣẹ le lo oniyipada tuntun nigbakugba (paapaa ti ko ba ti kede), ati Excel yoo tọju rẹ bi oniyipada ti iru. iyatọ. Sibẹsibẹ, awọn idi pupọ lo wa ti eyi ko yẹ ki o ṣee:

  1. Lilo iranti ati iyara iṣiro. Ti o ko ba sọ oniyipada kan pẹlu itọkasi iru data, lẹhinna nipasẹ aiyipada yoo ṣeto si iru iyatọ. Iru data yii nlo iranti diẹ sii ju awọn iru data miiran lọ. Awọn baiti afikun diẹ fun oniyipada le ma dun bi pupọ, ṣugbọn ni iṣe, awọn eto le ni ẹgbẹẹgbẹrun awọn oniyipada (paapaa nigbati o n ṣiṣẹ pẹlu awọn akopọ). Nitorina, awọn afikun iranti lo nipa oniyipada bi iyatọ, akawe si awọn oniyipada ti iru odidi or nikan, le ṣe afikun si iye pataki. Ni afikun, awọn iṣẹ pẹlu awọn oniyipada ti iru iyatọ ti wa ni pipa pupọ diẹ sii laiyara ju pẹlu awọn oniyipada ti awọn iru miiran, lẹsẹsẹ, afikun ẹgbẹrun awọn oniyipada ti iru iyatọ le significantly fa fifalẹ isiro.
  2. Idena awọn typos ni awọn orukọ oniyipada. Ti gbogbo awọn oniyipada ba kede, lẹhinna alaye VBA le ṣee lo - Aṣayan Koju (a yoo sọrọ nipa rẹ nigbamii) lati le ṣe idanimọ gbogbo awọn oniyipada ti a ko sọ. Eyi yọkuro hihan aṣiṣe ninu eto naa nitori abajade orukọ oniyipada kikọ ti ko tọ. Fun apẹẹrẹ, lilo oniyipada ti a npè ni Oṣuwọn sVAT, o le ṣe typo ati, fifi iye kan si oniyipada yii, kọ: "VATrate = 0,175". O ti wa ni o ti ṣe yẹ wipe lati bayi lori, awọn oniyipada Oṣuwọn sVAT yẹ ki o ni iye 0,175 - ṣugbọn dajudaju kii ṣe. Ti ipo ikede aṣẹ dandan ti gbogbo awọn oniyipada ti a lo ti ṣiṣẹ, lẹhinna olupilẹṣẹ VBA yoo tọka aṣiṣe lẹsẹkẹsẹ, nitori kii yoo rii oniyipada naa. VATrate laarin awon ti kede.
  3. Awọn iye afihan ti ko baramu iru ikede ti oniyipada kan. Ti o ba sọ oniyipada kan ti iru kan ki o gbiyanju lati fi data ti o yatọ si iru rẹ, iwọ yoo gba aṣiṣe kan, eyiti, ti o ba jẹ pe ko ṣe atunṣe, le fa ki eto naa ṣubu. Ni wiwo akọkọ, eyi le dabi idi ti o dara lati ma ṣe sọ awọn oniyipada, ṣugbọn ni otitọ, ju ṣaaju ki o to pe ọkan ninu awọn oniyipada gba data ti ko tọ ti o yẹ ki o gba - pupọ dara julọ! Bibẹẹkọ, ti eto naa ba tẹsiwaju lati ṣiṣẹ, awọn abajade le jẹ aṣiṣe ati airotẹlẹ, ati pe yoo nira pupọ sii lati wa idi ti awọn aṣiṣe. O tun ṣee ṣe pe Makiro yoo jẹ “ni aṣeyọri” ṣiṣe. Bi abajade, aṣiṣe naa yoo lọ ni akiyesi ati pe iṣẹ yoo tẹsiwaju pẹlu data ti ko tọ!

Ni iyi yii, o jẹ wuni lati rii iru data ti ko tọ ati ṣatunṣe iru awọn aṣiṣe ninu koodu ni kutukutu bi o ti ṣee. Fun awọn idi wọnyi, o gba ọ niyanju pe ki o sọ gbogbo awọn oniyipada nigbati o nkọ macro VBA kan.

Aṣayan Koju

onišẹ Aṣayan Koju fa gbogbo awọn oniyipada ti yoo ṣee lo ni koodu VBA lati kede, ati awọn asia gbogbo awọn oniyipada ti a ko kede bi awọn aṣiṣe lakoko akopọ (ṣaaju ki ipaniyan koodu bẹrẹ). Lilo oniṣẹ yii ko nira - kan kọ laini yii ni oke ti faili VBA naa:

Option Explicit

Ti o ba fẹ lati fi sii nigbagbogbo Aṣayan Koju si oke ti kọọkan titun VBA module da, yi le ṣee ṣe laifọwọyi. Lati ṣe eyi, o nilo lati mu aṣayan ṣiṣẹ Beere Ikede Ayipada ni VBA olootu eto.

Eyi ni a ṣe bi eleyi:

  • Lati awọn Visual Ipilẹ Olootu akojọ, tẹ irinṣẹ > awọn aṣayan
  • Ninu ibaraẹnisọrọ to han, ṣii taabu naa Olootu
  • Ṣayẹwo apoti Beere Ikede Ayipada ki o si tẹ OK

Nigbati o ba mu ṣiṣẹ, okun naa Aṣayan Koju yoo wa ni laifọwọyi fi sii ni ibẹrẹ ti kọọkan titun module da.

Dopin ti Ayipada ati Constant

Olukuluku oniyipada tabi ibakan ni opin opin tirẹ, iyẹn ni, apakan ti o lopin ti eto ninu eyiti oniyipada yii wa. Iwọn naa da lori ibiti a ti ṣe ikede ti oniyipada tabi igbagbogbo. Mu, fun apẹẹrẹ, oniyipada Oṣuwọn sVAT, eyi ti o ti lo ninu awọn iṣẹ Apapọ iye owo. Tabili ti o tẹle n jiroro awọn aṣayan meji fun scoping oniyipada Oṣuwọn sVATkede ni awọn ipo oriṣiriṣi meji ni module:

Aṣayan Dim sVAT_Rate ti o fojuhan Bi Iṣe Kanṣoṣo Total_Cost() Bi Ilọpo meji ... Iṣẹ Ipari
Ti o ba ti oniyipada Oṣuwọn sVAT ti a kede ni ibẹrẹ ti module, lẹhinna ipari ti oniyipada yii yoo jẹ gbogbo module (ie oniyipada Oṣuwọn sVAT yoo wa ni mọ nipa gbogbo awọn ilana ni yi module).

Nitorina, ti o ba wa ninu iṣẹ naa Apapọ iye owo ayípadà Oṣuwọn sVAT yoo wa ni sọtọ diẹ ninu awọn iye, ki o si awọn tókàn iṣẹ executed laarin awọn kanna module yoo lo oniyipada Oṣuwọn sVAT pẹlu itumo kanna.

Sibẹsibẹ, ti o ba jẹ pe diẹ ninu awọn iṣẹ ti o wa ni module miiran ni a npe ni, lẹhinna fun iyipada naa Oṣuwọn sVAT kii yoo mọ.

Aṣayan Iṣe Ti o fojuhan Total_Cost() Bi Double Dim sVAT_Rate Bi Nikan… Iṣẹ Ipari
Ti o ba ti oniyipada Oṣuwọn sVAT kede ni ibẹrẹ iṣẹ naa Apapọ iye owo, lẹhinna ipari rẹ yoo ni opin si iṣẹ yii nikan (ie laarin iṣẹ naa Apapọ iye owo, o le lo oniyipada Oṣuwọn sVAT, ṣugbọn kii ṣe ita).

Nigba gbiyanju lati lo Oṣuwọn sVAT ninu ilana miiran, olupilẹṣẹ VBA yoo jabo aṣiṣe nitori pe a ko sọ oniyipada yii ni ita iṣẹ naa Apapọ iye owo (pese wipe onišẹ ti lo Aṣayan Koju).

Ni apẹẹrẹ ti o han loke, iyipada ti wa ni ikede ni ipele module pẹlu koko Dim. Sibẹsibẹ, o le jẹ dandan pe awọn oniyipada ti a sọ le ṣee lo ni awọn modulu miiran. Ni iru awọn igba bẹẹ, lati sọ oniyipada dipo ọrọ-ọrọ kan Dim Koko gbọdọ wa ni lo àkọsílẹ.

Nipa ọna, lati le sọ iyipada kan ni ipele module, dipo ọrọ-ọrọ Dim Koko le ṣee lo ikọkọ, eyi ti o tọkasi wipe yi oniyipada ti wa ni ti a ti pinnu fun lilo nikan ni isiyi module.

O tun le lo awọn koko-ọrọ lati kede awọn iduro. àkọsílẹ и ikọkọ, sugbon ko dipo ti Koko Kojọ, pẹlu rẹ.

Awọn apẹẹrẹ atẹle ṣe afihan lilo awọn koko-ọrọ àkọsílẹ и ikọkọ loo si awọn oniyipada ati awọn iduro.

Aṣayan Ifarapa gbangba sVAT_Rate Bi IMax_Count ti gbogbo eniyan = 5000 ...    
Ni apẹẹrẹ yii, koko-ọrọ àkọsílẹ lo lati sọ oniyipada Oṣuwọn sVAT ati awọn iduro iMax_Count. Iwọn awọn eroja ti a sọ ni ọna yii yoo jẹ gbogbo iṣẹ akanṣe lọwọlọwọ.

Eyi tumọ si pe Oṣuwọn sVAT и iMax_Count yoo wa ni eyikeyi module ise agbese.

Aṣayan sVAT_Rate Aladani Titọ Bi IMax_Count = 5000 ...    
Ni apẹẹrẹ yii, lati sọ oniyipada kan Oṣuwọn sVAT ati awọn iduro iMax_Count Koko lo ikọkọ. Awọn dopin ti awọn wọnyi eroja ni awọn ti isiyi module.

Eyi tumọ si pe Oṣuwọn sVAT и iMax_Count yoo wa ni gbogbo awọn ilana ti module lọwọlọwọ, ṣugbọn kii yoo wa si awọn ilana ni awọn modulu miiran.

Fi a Reply