Varjabbli u kostanti fil-VBA

Fil-VBA, bħal fi kwalunkwe lingwa ta 'programmar oħra, varjabbli u kostanti jintużaw biex jaħżnu kwalunkwe valuri. Kif jimplika l-isem, il-varjabbli jistgħu jinbidlu, filwaqt li l-kostanti jaħżnu valuri fissi.

Per eżempju, kostanti Pi jaħżen il-valur 3,14159265... In-numru "Pi" mhux se jinbidel waqt l-eżekuzzjoni tal-programm, iżda xorta huwa aktar konvenjenti li jinħażen tali valur bħala kostanti.

Fl-istess ħin, nistgħu nużaw il-varjabbli sVAT_Rate biex taħżen ir-rata tal-VAT fuq oġġetti mixtrija. Valur varjabbli sVAT_Rate jistgħu jvarjaw skond il-prodott mixtri.

Tipi ta 'Dejta

Il-varjabbli u l-kostanti kollha huma ta' tip ta' dejta partikolari. It-tabella hawn taħt telenka t-tipi ta' dejta użati f'VBA b'deskrizzjoni u firxa ta' valuri possibbli:

Tip ta' dejta daqsdeskrizzjoniFirxa ta 'valuri
ByteBytes 1Numeri interi pożittivi; spiss jintuża għal data binarjaminn 0 għal 255
BooleanBytes 2Jista' jkun Veru jew FalzVeru jew FALZ
IntegerBytes 2Numri sħaħ (l-ebda parti frazzjonali)minn -32 sa +768
LongBytes 4Numeri interi kbar (l-ebda parti frazzjonali)от -2 147 483 648 до +2 147 483 647
wieħedBytes 4Numru wieħed ta' punt li jvarja ta' preċiżjoniminn -3.4e38 sa +3.4e38
DoubleBytes 8Numru floating point ta 'preċiżjoni doppjaminn -1.8e308 sa +1.8e308
munitaBytes 8Numru bil-punt li jvarja, b'numru fiss ta 'postijiet deċimaliот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
dataBytes 8Data u ħin – Data tat-tip Data hija rappreżentata b'numru b'punt li jvarja. Il-parti sħiħa ta 'dan in-numru tesprimi d-data, u l-parti frazzjonali tesprimi l-ħin.mill-1 ta’ Jannar, 100 sal-31 ta’ Diċembru, 9999
GħanBytes 4Referenza għall-oġġettKwalunkwe referenza għall-oġġett
Stringqed tinbidelSett ta' karattri. It-tip String jista 'jkun ta' tul fiss jew varjabbli. Użat aktar komunement b'tul varjabbliTul fiss – sa madwar 65 karattru. Tul varjabbli - sa madwar 500 biljun karattru
varjantqed tinbidelJista' jkun fih data, float, jew sekwenza ta' karattri. Dan it-tip jintuża f'każijiet fejn ma jkunx magħruf minn qabel x'tip ta' data se tiddaħħal.Numru – Doppju, spag – String

Ovvjament, billi tuża t-tabella ta 'hawn fuq u tagħżel it-tip ta' dejta t-tajjeb, tista 'tuża l-memorja b'mod aktar ekonomiku (per eżempju, agħżel it-tip ta' dejta Integer minflok Long or wieħed minflok Double). Madankollu, meta tuża tipi ta 'dejta aktar kompatti, trid toqgħod attent li l-kodiċi tiegħek ma jipprovax jidħol fihom valuri sproporzjonati kbar.

Id-Dikjarazzjoni ta' Varjabbli u Kostanti

Nota tat-Traduttur: Meta wieħed jitkellem dwar varjabbli fil-VBA, ta 'min isemmi punt ieħor importanti ħafna. Jekk niddikjaraw varjabbli iżda ma nassenjaw l-ebda valur lilha, allura tiġi inizjalizzata b'valur default:

• kordi tat-test huma inizjalizzati bi kordi vojta;

• numri — valur 0;

• varjabbli tat-tip Boolean — Falza;

• dati – 30 ta’ Diċembru, 1899.

Qabel ma tkun tista' tintuża varjabbli jew kostanti, għandha tiġi ddikjarata. Biex tagħmel dan, żid il-linja sempliċi ta 'kodiċi li ġejja mal-makro:

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

Fil-linja ta 'hawn fuq tal-kodiċi Isem_varjabbli huwa l-isem tal-varjabbli li se tintuża fil-kodiċi, u Tip_Data huwa wieħed mit-tipi ta 'dejta mit-tabella mogħtija ftit qabel f'dan l-artikolu. Pereżempju:

Dim sVAT_Rate As Single Dim i As Integer

Il-kostanti huma ddikjarati bl-istess mod, iżda meta jiġu ddikjarati l-kostanti, il-valur tagħhom għandu jiġi indikat immedjatament. Per eżempju, bħal dan:

Const iMaxCount = 5000 Const iMaxScore = 100

Mhuwiex meħtieġ li jiġu ddikjarati varjabbli f'Excel. B'mod awtomatiku, il-varjabbli kollha mdaħħla iżda mhux iddikjarati f'Excel se jkollhom it-tip varjant u se jkunu jistgħu jaċċettaw kemm il-valur numeriku kif ukoll it-test.

Għalhekk, il-programmatur jista 'juża l-varjabbli l-ġdid fi kwalunkwe ħin (anki jekk ma ġiex iddikjarat), u Excel jittrattaha bħala varjabbli tat-tip varjant. Madankollu, hemm diversi raġunijiet għaliex dan m'għandux isir:

  1. Użu tal-memorja u veloċità komputazzjonali. Jekk ma tiddikjarax varjabbli b'indikazzjoni tat-tip tad-dejta, allura b'mod awtomatiku din tkun issettjata għat-tip varjant. Dan it-tip ta' dejta juża aktar memorja minn tipi ta' dejta oħra. Ftit bytes żejda għal kull varjabbli jistgħu ma jinstemgħux bħal ħafna, iżda fil-prattika, il-programmi jista 'jkollhom eluf ta' varjabbli (speċjalment meta jaħdmu ma 'arrays). Għalhekk, il-memorja żejda użata minn varjabbli bħal varjant, meta mqabbla ma 'varjabbli tat-tip Integer or wieħed, jistgħu jammontaw għal ammont sinifikanti. Barra minn hekk, operazzjonijiet b'varjabbli tat-tip varjant huma esegwiti ħafna aktar bil-mod milli ma 'varjabbli ta' tipi oħra, rispettivament, elf varjabbli żejda ta 'tip varjant jistgħu jnaqqsu b'mod sinifikanti l-kalkoli.
  2. Prevenzjoni ta' typos f'ismijiet varjabbli. Jekk il-varjabbli kollha huma ddikjarati, allura l-istqarrija VBA tista 'tintuża - Għażla Espliċita (se nitkellmu dwarha aktar tard) sabiex jiġu identifikati l-varjabbli kollha mhux iddikjarati. Dan jelimina d-dehra ta 'żball fil-programm bħala riżultat ta' isem varjabbli miktub ħażin. Per eżempju, bl-użu ta 'varjabbli msemmija sVAT_Rate, tista 'tagħmel typo u, tassenja valur għal din il-varjabbli, ikteb: "VATRate = 0,175". Huwa mistenni li minn issa 'l quddiem, il-varjabbli sVAT_Rate għandu jkun fih il-valur 0,175 – imma ovvjament ma jkunx. Jekk il-mod ta 'dikjarazzjoni obbligatorja tal-varjabbli kollha użati huwa attivat, allura l-kompilatur VBA immedjatament jindika żball, peress li mhux se jsib il-varjabbli VATRate fost dawk imħabbra.
  3. L-enfasi ta' valuri li ma jaqblux mat-tip dikjarat ta' varjabbli. Jekk tiddikjara varjabbli ta 'ċertu tip u tipprova tassenja dejta ta' tip differenti lilha, ikollok żball, li, jekk jitħalla mhux ikkoreġut, jista 'jikkawża l-crash tal-programm. L-ewwel daqqa t'għajn, din tista' tidher bħala raġuni tajba biex ma tiddikjarax varjabbli, iżda fil-fatt, minn qabel jirriżulta li waħda mill-varjabbli rċeviet id-dejta żbaljata li suppost kellha tirċievi - tant aħjar! Inkella, jekk il-programm ikompli jaħdem, ir-riżultati jistgħu jkunu żbaljati u mhux mistennija, u jkun ħafna aktar diffiċli li ssib il-kawża tal-iżbalji. Huwa wkoll possibbli li l-makro tiġi esegwita "b'suċċess". Bħala riżultat, l-iżball ma jibqax inosservat u x-xogħol se jkompli b'dejta mhux korretta!

F'dan ir-rigward, huwa mixtieq li jinstab tip ta' dejta mhux korrett u jikkoreġi żbalji bħal dawn fil-kodiċi kemm jista 'jkun kmieni. Għal dawn ir-raġunijiet, huwa rakkomandat li tiddikjara l-varjabbli kollha meta tikteb makro VBA.

Għażla Espliċita

operatur Għażla Espliċita tikkawża li l-varjabbli kollha li se jintużaw fil-kodiċi VBA jiġu ddikjarati, u jimmarka l-varjabbli kollha mhux iddikjarati bħala żbalji waqt il-kumpilazzjoni (qabel tibda l-eżekuzzjoni tal-kodiċi). L-applikazzjoni ta 'dan l-operatur mhix diffiċli - ikteb din il-linja fil-parti ta' fuq nett tal-fajl VBA:

Option Explicit

Jekk trid dejjem daħħal Għażla Espliċita fil-quċċata ta 'kull modulu VBA ġdid maħluq, dan jista' jsir awtomatikament. Biex tagħmel dan, jeħtieġ li tattiva l-għażla Jeħtieġ Dikjarazzjoni Varjabbli fis-settings tal-editur tal-VBA.

Dan isir hekk:

  • Mill-menu Visual Basic Editur, ikklikkja għodod > Għażliet
  • Fid-djalogu li jidher, iftaħ it-tab Editur
  • Iċċekkja l-kaxxa Jeħtieġ Dikjarazzjoni Varjabbli u l-istampa OK

Meta tkun attivata, is-sekwenza Għażla Espliċita se jiddaħħal awtomatikament fil-bidu ta' kull modulu ġdid maħluq.

Skop ta' Varjabbli u Kostanti

Kull varjabbli jew kostanti ddikjarata għandha l-ambitu limitat tagħha stess, jiġifieri, parti limitata tal-programm li fih teżisti din il-varjabbli. L-ambitu jiddependi minn fejn saret id-dikjarazzjoni tal-varjabbli jew kostanti. Ħu, pereżempju, il-varjabbli sVAT_Rate, li tintuża fil-funzjoni Total_Cost. It-tabella li ġejja tiddiskuti żewġ għażliet għal skoping varjabbli sVAT_Rateiddikjarat f'żewġ pożizzjonijiet differenti fil-modulu:

Għażla Espliċita Dim sVAT_Rate Bħala Funzjoni Unika Total_Cost() Bħala Doppja ... Tmiem Funzjoni
Jekk il-varjabbli sVAT_Rate iddikjarat fil-bidu nett tal-modulu, allura l-ambitu ta 'din il-varjabbli se jkun il-modulu kollu (jiġifieri l-varjabbli sVAT_Rate se jiġu rikonoxxuti mill-proċeduri kollha f’dan il-modulu).

Għalhekk, jekk fil-funzjoni Total_Cost varjabbli sVAT_Rate se jiġi assenjat xi valur, allura l-funzjoni li jmiss esegwita fi ħdan l-istess modulu se tuża l-varjabbli sVAT_Rate bl-istess tifsira.

Madankollu, jekk tissejjaħ xi funzjoni li tinsab f'modulu ieħor, allura għaliha l-varjabbli sVAT_Rate mhux se jkun magħruf.

Għażla Funzjoni Espliċita Total_Cost() Bħala Double Dim sVAT_Rate As Single ... End Function
Jekk il-varjabbli sVAT_Rate iddikjarat fil-bidu tal-funzjoni Total_Cost, allura l-ambitu tiegħu jkun limitat biss għal din il-funzjoni (jiġifieri fi ħdan il-funzjoni Total_Cost, tista' tuża l-varjabbli sVAT_Rate, iżda mhux barra).

Meta tipprova tuża sVAT_Rate fi proċedura oħra, il-kompilatur VBA jirrapporta żball minħabba li din il-varjabbli ma ġietx iddikjarata barra mill-funzjoni Total_Cost (sakemm jintuża l-operatur Għażla Espliċita).

Fl-eżempju muri hawn fuq, il-varjabbli hija ddikjarata fil-livell tal-modulu bil-keyword Dim. Madankollu, jista' jkun meħtieġ li varjabbli ddikjarati jistgħu jintużaw f'moduli oħra. F'każijiet bħal dawn, biex tiddikjara varjabbli minflok keyword Dim trid tintuża keyword Pubblika.

Mill-mod, sabiex tiddikjara varjabbli fil-livell tal-modulu, minflok il-kelma prinċipali Dim keyword tista' tintuża Privat, li jindika li din il-varjabbli hija maħsuba għall-użu biss fil-modulu attwali.

Tista 'wkoll tuża keywords biex tiddikjara kostanti. Pubblika и Privat, iżda mhux minflok il-kelma prinċipali Kost, flimkien magħha.

L-eżempji li ġejjin juru l-użu tal-kliem kjavi Pubblika и Privat applikata għal varjabbli u kostanti.

Għażla Pubblika Espliċita sVAT_Rate As Single Public Const iMax_Count = 5000 ...    
F'dan l-eżempju, il-kelma prinċipali Pubblika użati biex tiddikjara varjabbli sVAT_Rate u kostanti iMax_Count. L-ambitu tal-elementi ddikjarati b'dan il-mod se jkun il-proġett attwali kollu.

Dan ifisser li sVAT_Rate и iMax_Count se jkunu disponibbli fi kwalunkwe modulu tal-proġett.

Għażla Privat Espliċitu sVAT_Rate As Single Private Const iMax_Count = 5000 ...    
F'dan l-eżempju, biex tiddikjara varjabbli sVAT_Rate u kostanti iMax_Count keyword użata Privat. L-ambitu ta 'dawn l-elementi huwa l-modulu attwali.

Dan ifisser li sVAT_Rate и iMax_Count se jkunu disponibbli fil-proċeduri kollha tal-modulu attwali, iżda mhux se jkunu disponibbli għall-proċeduri f'moduli oħra.

Ħalli Irrispondi