Werrej
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 | daqs | deskrizzjoni | Firxa ta 'valuri |
---|---|---|---|
Byte | Bytes 1 | Numeri interi pożittivi; spiss jintuża għal data binarja | minn 0 għal 255 |
Boolean | Bytes 2 | Jista' jkun Veru jew Falz | Veru jew FALZ |
Integer | Bytes 2 | Numri sħaħ (l-ebda parti frazzjonali) | minn -32 sa +768 |
Long | Bytes 4 | Numeri interi kbar (l-ebda parti frazzjonali) | от -2 147 483 648 до +2 147 483 647 |
wieħed | Bytes 4 | Numru wieħed ta' punt li jvarja ta' preċiżjoni | minn -3.4e38 sa +3.4e38 |
Double | Bytes 8 | Numru floating point ta 'preċiżjoni doppja | minn -1.8e308 sa +1.8e308 |
munita | Bytes 8 | Numru bil-punt li jvarja, b'numru fiss ta 'postijiet deċimali | от -922 337 203 685 477.5808 до +922 337 203 685 477.5807 |
data | Bytes 8 | Data 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ħan | Bytes 4 | Referenza għall-oġġett | Kwalunkwe referenza għall-oġġett |
String | qed tinbidel | Sett ta' karattri. It-tip String jista 'jkun ta' tul fiss jew varjabbli. Użat aktar komunement b'tul varjabbli | Tul fiss – sa madwar 65 karattru. Tul varjabbli - sa madwar 500 biljun karattru |
varjant | qed tinbidel | Jista' 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:
- 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.
- 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.
- 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. |