Deall Newidynnau a Chysonion mewn Macros Excel

Yn yr erthygl hon, byddwch yn dysgu beth yw cysonion a newidynnau mewn macros, lle gellir eu defnyddio, a beth yw'r prif wahaniaeth rhwng gwahanol fathau o ddata. Bydd hefyd yn cael ei ddatgelu pam mae angen cysonion, os gallwch chi ysgrifennu newidyn a pheidio byth â'i newid.

Fel ieithoedd rhaglennu eraill, gellir storio data mewn newidynnau neu gysonion (cyfeirir at y ddau ohonynt yn aml fel cynwysyddion data). Dyma'r prif wahaniaeth rhwng y cysyniadau hyn. Gall y cyntaf newid yn dibynnu ar yr hyn sy'n digwydd yn y rhaglen. Yn eu tro, mae cysonion yn cael eu gosod unwaith ac nid ydynt yn newid eu gwerth.

Gall cysonion fod yn ddefnyddiol os oes angen i chi ddefnyddio'r un gwerth mawr sawl gwaith. Yn lle copïo'r rhif, gallwch chi ysgrifennu enw'r cysonyn. Er enghraifft, gallwch ddefnyddio'r "Pi" cyson i storio Pi, sy'n werth cyson. Mae'n fawr iawn, a phob tro mae'n eithaf anodd ei ysgrifennu neu ei chwilio a'i gopïo. Ac felly, mae'n ddigon i ysgrifennu dau gymeriad, ac mae'r amgylchedd yn awtomatig yn defnyddio'r nifer a ddymunir.

Mae angen i'r defnyddiwr Excel ddatgan newidynnau os oes angen iddo newid y gwerth sydd wedi'i storio ynddynt o bryd i'w gilydd. Er enghraifft, gallwch osod newidyn o'r enw sVAT_Rate, a fydd yn storio'r gyfradd TAW gyfredol ar gyfer y cynnyrch. Os bydd yn newid, gallwch ei gywiro'n gyflym. Mae hyn yn arbennig o ddefnyddiol i'r rhai sy'n gwneud busnes yn yr Unol Daleithiau, lle mae'n bosibl na fydd TAW o gwbl ar rai nwyddau (ac mae'r dreth hon hefyd yn amrywio o dalaith i dalaith).

Mathau Data

Gall pob cynhwysydd data fod yn un o sawl math. Dyma dabl sy'n disgrifio'r mathau safonol o wybodaeth wedi'i phrosesu. Mae yna lawer ohonynt, a gall ymddangos i ddechreuwr i ddechrau eu bod yn ailadrodd ei gilydd. Ond teimlad rhithiol yw hwn. Darllenwch ymlaen i ddysgu pam mae nodi'r math cywir o ddata mor bwysig.

Ni argymhellir defnyddio math o ddata sy'n cymryd mwy o le yn y cof ar gyfer niferoedd bach. Er enghraifft, ar gyfer y rhif 1, mae'n ddigon defnyddio'r math Byte. Bydd hyn yn cael effaith gadarnhaol ar berfformiad y modiwl gweithredadwy, yn enwedig ar gyfrifiaduron gwan. Ond mae'n bwysig peidio â mynd yn rhy bell yma. Os ydych chi'n defnyddio math o ddata sy'n rhy gryno, efallai na fydd gwerth rhy fawr yn ffitio ynddo.

Datgan Cysonion a Newidynnau

Mae defnyddio cynhwysydd data heb ddatgan yn gyntaf yn cael ei annog yn gryf. Yna gall nifer o broblemau godi, ac er mwyn osgoi hyn mae angen ysgrifennu ychydig o linellau bach o god gyda chyfrifo newidynnau neu gysonion.

I ddatgan newidyn, defnyddir y datganiad Dim. Er enghraifft, fel hyn:

Dim Newidyn_Enw Fel Cyfanrif

Variable_Name yw enw'r newidyn. Nesaf, mae'r gweithredwr Fel wedi'i ysgrifennu, gan nodi'r math o ddata. Yn lle'r llinynnau "Variable_Name" a "Integer", gallwch fewnosod eich enw a'ch math o ddata eich hun.

Gellir datgan cysonion hefyd, ond yn gyntaf rhaid i chi nodi eu gwerth. Un o'r opsiynau yw:

Cons iMaxCount = 5000

Er tegwch, mewn rhai achosion gallwch chi wneud heb ddatgan newidyn, ond yn yr achos hwn byddant yn cael yr Amrywiad math yn awtomatig. Fodd bynnag, nid yw hyn yn cael ei argymell am y rhesymau canlynol:

  1. Mae amrywiad yn cael ei brosesu'n llawer arafach, ac os oes llawer o newidynnau o'r fath, gellir arafu prosesu gwybodaeth yn sylweddol ar gyfrifiaduron gwan. Mae'n ymddangos mai'r eiliadau hynny fydd yn penderfynu? Ond os oes rhaid i chi ysgrifennu nifer fawr o linellau cod, ac yna hefyd ei redeg ar gyfrifiaduron gwan (sy'n dal i gael eu gwerthu, o ystyried bod angen llawer o RAM ar ystafelloedd swyddfa modern), gallwch chi atal y gwaith yn llwyr. Mae yna achosion pan arweiniodd ysgrifennu macros yn anghywir at rewi llyfrau clyfar sydd â swm bach o RAM ac nad ydyn nhw wedi'u cynllunio i gyflawni tasgau cymhleth. 
  2. Caniateir camargraffiadau mewn enwau, y gellir eu hatal trwy ddefnyddio'r datganiad Option Explicit, sy'n eich galluogi i ddod o hyd i newidyn heb ei ddatgan, os canfyddir un. Mae hon yn ffordd hawdd o ganfod gwallau, gan fod y teipio lleiaf yn achosi i'r dehonglydd fethu adnabod y newidyn. Ac os trowch y modd datgan amrywiol ymlaen, ni fydd y cyfieithydd yn caniatáu ichi redeg y macro os canfyddir cynwysyddion data na chawsant eu datgan ar ddechrau'r modiwl.
  3. Osgoi gwallau a achosir gan werthoedd newidiol nad ydynt yn cyfateb i'r math o ddata. Fel arfer, bydd aseinio gwerth testun i newidyn cyfanrif yn taflu gwall. Ydy, ar y naill law, mae math generig yn cael ei neilltuo heb ddatganiad, ond os cânt eu datgan ymlaen llaw, yna gellir osgoi gwallau ar hap.

Felly, er gwaethaf popeth, argymhellir yn gryf i ddatgan yr holl newidynnau mewn macros Excel.

Mae un peth arall i'w gadw mewn cof wrth ddatgan newidynnau. Mae'n bosibl peidio ag aseinio unrhyw werthoedd i newidyn wrth ei ddatgan, ond yn yr achos hwn mae'n caffael gwerth rhagosodedig. Er enghraifft:

  1. Gwneir llinellau yn wag.
  2. Mae'r niferoedd yn cymryd y gwerth 0.
  3. I ddechrau, ystyrir bod newidynnau math Boole yn ffug.
  4. Y dyddiad rhagosodedig yw Rhagfyr 30, 1899.

Er enghraifft, nid oes angen i chi aseinio'r gwerth 0 i newidyn cyfanrif os na nodwyd gwerth yn flaenorol. Mae hi eisoes yn cynnwys y rhif hwn.

Datganiad Dewisol Penodol

Mae'r datganiad hwn yn caniatáu ichi ddatgan yr holl newidynnau a ddefnyddir yn y cod VBA a phennu presenoldeb unrhyw gynwysyddion heb eu datgan cyn i'r cod gael ei redeg. I ddefnyddio'r nodwedd hon, ysgrifennwch linell o god Option Explicit ar frig y cod macro.

Os oes angen i chi gynnwys y datganiad hwn yn eich cod bob tro, gallwch wneud hynny gan ddefnyddio gosodiad arbennig yn y golygydd VBA. I alluogi'r opsiwn hwn, rhaid i chi:

  1. Ewch i'r amgylchedd datblygu ar hyd y llwybr - Offer > Opsiynau.
  2. Yn y ffenestr sy'n agor ar ôl hyn, agorwch y tab Golygydd.
  3. Ac yn olaf, gwiriwch y blwch wrth ymyl yr eitem Gofyn am Ddatganiad Amrywiol.

Ar ôl cwblhau'r camau hyn, cliciwch ar y botwm "OK". 

Dyna ni, nawr wrth ysgrifennu pob macro newydd, bydd y llinell hon yn cael ei fewnosod ar frig y cod yn awtomatig.

Cwmpas Cysonion a Newidynnau

Dim ond cwmpas cyfyngedig sydd gan bob newidyn neu gysonyn. Mae'n dibynnu ble rydych chi'n ei ddatgan.

Tybiwch fod gennym swyddogaeth Cyfanswm_Cost(), ac mae'n defnyddio'r newidyn sVAT_Cyfradd. Yn dibynnu ar y sefyllfa yn y modiwl, bydd ganddo gwmpas gwahanol:

Opsiwn Eglur

Dim sVAT_Rate As Single

Swyddogaeth Cyfanswm_Cost() Fel Dwbl

.

.

.

Swyddogaeth End

Os datgenir newidyn ar frig modiwl ei hun, mae'n ymledu trwy'r modiwl hwnnw. Hynny yw, gellir ei ddarllen gan bob gweithdrefn.

Ar ben hynny, os newidiodd un o'r gweithdrefnau werth y newidyn, yna bydd yr un nesaf hefyd yn darllen y gwerth cywiredig hwn. Ond mewn modiwlau eraill ni fydd y newidyn hwn yn cael ei ddarllen o hyd.

Opsiwn Eglur

Swyddogaeth Cyfanswm_Cost() Fel Dwbl

Dim sVAT_Rate As Single

   .

   .

   .

Swyddogaeth End

Yn yr achos hwn, mae'r newidyn yn cael ei ddatgan y tu mewn i'r weithdrefn, a bydd y cyfieithydd yn taflu gwall os caiff ei ddefnyddio mewn gweithdrefn arall.

Os ydych chi am i'r newidyn gael ei ddarllen gan fodiwlau eraill, rhaid i chi ddefnyddio'r allweddair Cyhoeddus yn lle'r allweddair Dim. Yn yr un modd, gallwch gyfyngu cwmpas newidyn i'r modiwl cyfredol yn unig trwy ddefnyddio'r datganiad Cyhoeddus, sydd wedi'i ysgrifennu yn lle'r gair Dim.

Gallwch chi osod cwmpas cysonion mewn ffordd debyg, ond mae'r allweddair yma wedi'i ysgrifennu gyda'r gweithredwr Cons.

Dyma dabl gydag enghraifft dda o sut mae'n gweithio gyda chysonion a newidynnau.

Opsiwn Eglur

sVAT_Cyfradd gyhoeddus fel Sengl

Const Cyhoeddus iMax_Count = 5000

Yn yr enghraifft hon, gallwch weld sut mae'r allweddair Cyhoeddus yn cael ei ddefnyddio i ddatgan newidyn, a beth sydd angen i chi ei ysgrifennu yn y golygydd Visual Basic i ddatgan cysonyn cyhoeddus. Mae cwmpas y cynwysyddion gwerth hyn yn berthnasol i bob modiwl.
Opsiwn Eglur

Preifat sVAT_Rate As Single

Const Preifat iMax_Count = 5000

Yma, mae newidynnau a chysonion yn cael eu datgan gan ddefnyddio'r allweddair Preifat. Mae hyn yn golygu mai dim ond o fewn y modiwl cyfredol y gellir eu gweld, ac ni all gweithdrefnau mewn modiwlau eraill eu defnyddio.

Pam mae angen cysonion a newidynnau

Mae'r defnydd o gysonion a newidynnau yn eich galluogi i gynyddu graddau dealladwyedd y cod. Ac os nad oes gan ddechreuwyr yn gyffredinol gwestiynau ynghylch pam mae angen newidynnau, yna mae yna lawer o amwyseddau ynghylch yr angen am gysonion. Ac mae'r cwestiwn hwn yn ymddangos, ar yr olwg gyntaf, yn eithaf rhesymegol. Wedi'r cyfan, gallwch ddatgan newidyn unwaith a pheidiwch byth â'i newid eto.

Mae'r ateb yn troi allan i fod rhywle yn yr un awyren ag o ran y defnydd o fathau o ddata sy'n meddiannu gofod mawr yn y cof. Os ydym yn delio â nifer enfawr o newidynnau, gallwn newid cynhwysydd presennol yn ddamweiniol. Os yw'r defnyddiwr yn rhagnodi na fydd gwerth penodol byth yn newid, yna bydd yr amgylchedd yn rheoli hyn yn awtomatig.

Mae hyn yn arbennig o bwysig pan fydd y macro yn cael ei ysgrifennu gan nifer o raglenwyr. Efallai y bydd rhywun yn gwybod na ddylai rhai newidyn newid. Ac nid yw'r llall. Os byddwch yn nodi'r gweithredwr Const, bydd datblygwr arall yn gwybod nad yw'r gwerth hwn yn newid.

Neu, os oes cysonyn ag un enw, a bod gan y newidyn enw gwahanol, ond tebyg. Yn syml, gall y datblygwr eu drysu. Er enghraifft, gelwir un newidyn nad oes angen ei newid yn Newidyn 11, ac un arall y gellir ei olygu yw Newidyn 1. Gall person yn awtomatig, wrth ysgrifennu cod, hepgor uned ychwanegol yn ddamweiniol a pheidio â sylwi arno. O ganlyniad, bydd y cynhwysydd ar gyfer gwerthoedd yn cael ei newid, na ddylid ei gyffwrdd.

Neu efallai y bydd y datblygwr ei hun yn anghofio pa newidynnau y gall gyffwrdd â nhw a pha rai na all. Mae hyn yn aml yn digwydd pan fydd y cod yn cael ei ysgrifennu am sawl wythnos, ac mae ei faint yn dod yn fawr. Yn ystod y cyfnod hwn, mae'n hawdd iawn anghofio hyd yn oed beth mae hyn neu'r newidyn hwnnw yn ei olygu.

Gallwch, gallwch wneud gyda sylwadau yn y sefyllfa hon, ond onid yw'n haws nodi'r gair Cons?

Casgliadau

Mae newidynnau yn elfen hanfodol o raglennu macro, sy'n eich galluogi i berfformio gweithrediadau cymhleth, o gyfrifiadau i hysbysu'r defnyddiwr am ddigwyddiadau penodol neu nodi gwerthoedd penodol yng nghelloedd taenlen.

Dylid defnyddio cysonion os yw'r datblygwr yn gwybod yn sicr na fydd cynnwys y cynwysyddion hyn yn newid yn y dyfodol. Argymhellir peidio â defnyddio newidynnau yn lle hynny, gan ei bod yn bosibl gwneud camgymeriad yn ddamweiniol.

Gadael ymateb