vba variables option explicit vba
V tej vadnici je razloženo, kako prijaviti in uporabiti spremenljivke VBA. Spoznajte tudi eksplicitne možnosti, obseg spremenljivk, statične in konstantne spremenljivke:
V računalniku so vse podatkovne vrednosti shranjene v pomnilniku ali računalniškem pomnilniku. Za dostop do teh vrednosti morate določiti ime, povezano s to vrednostjo, ki se v programskih jezikih imenuje spremenljivka.
V tej vadnici bomo izvedeli, kako spremenljivko prijaviti in definirati skupaj z različnimi vrstami obsegov spremenljivk, podrobno pa bomo raziskali tudi statične in konstantne spremenljivke.
=> Tukaj si oglejte A-Z vadnic VBA za usposabljanje
Kaj se boste naučili:
Spremenljivke VBA
Spremenljivke so kot ograde za vrednosti v računalniškem pomnilniku. Spremenljivke lahko vsebujejo različne sorte vrednosti in te vrednosti se lahko med izvajanjem kode spremenijo.
Vsaka spremenljivka bo imela ime, ki se uporablja za dostop do vrednosti. VBA ima določene omejitve glede izbire imena.
Spodaj je naveden seznam omejitev:
- Ime spremenljivke ne sme biti daljše od 255 znakov.
- Ime spremenljivke se ne more začeti s številko.
- Ne morete začeti s posebnimi znaki, kot so!, @, &,., # Ali ne sme imeti presledkov.
- Ključne besede se ne štejejo za ime spremenljivke.
Če kršite te omejitve, bo prevajalnik izdal napako
Primer:
Veljavna imena spremenljivk: varName, Result12, First_Number
Neveljavna imena spremenljivk: 123abc, #number, Sub, abc.123
Prva številka (presledek med besedami ni dovoljen)
Razglasitev spremenljivke VBA
Moramo uporabiti Nobenega ključna beseda za razglasitev spremenljivke. Med razglasitvijo spremenljivke sta 2 razdelka. 1.stje ime spremenljivke in 2ndje vrsta vrednosti, ki se shrani v spremenljivko, ki se imenuje Data type.
Sintaksa: Dim VariableName kot DataType
Primer:
- Zatemni MyAge kot celo število
- Zatemni My_Percentage kot dvojno
- Zatemni polno ime kot niz
Tu prevajalniku izrecno pravite, da mora moja spremenljivka hraniti samo te vrste podatkov, VBA pa bo poskrbel, da bo vrnil napako neusklajenosti vrste prevajalnika, če se vrednost, določena za spremenljivko, ne ujema s podatkovnim tipom.
Primer:
Sub example1() Dim Total_Marks As Integer Total_Marks = “” MsgBox Total_Marks End Sub
Če pa niste prepričani o podatkovnem tipu spremenljivke, vam VBA omogoča preskok podatkovnega tipa. Veljavna je tudi spodaj navedena skladnja.
Dim VariableName
Ko ne deklarirate podatkovnega tipa spremenljivke, ga VBA obravnava kot podatkovni tip Variant in je dolžan sprejeti katero koli vrsto podatkovnih števil, kot so celo število, niz, delovni zvezek itd. variabilne spremenljivke lahko sprejmejo tudi vrednost niza, celoštevilsko vrednost in katero koli drugo vrsto.
Sub VarientVariable() Dim Total_Marks Total_Marks = '' MsgBox Total_Marks Total_Marks = 544.33 MsgBox Total_Marks Total_Marks = 522 MsgBox Total_Marks End Sub
Ker je Total_Marks različica spremenljivke, za razliko od prejšnje kode prevajalnik ne bo povzročil nobene napake, kot je prikazano spodaj.
Opomba: Ne pozabite, da VBA omogoča uporabo spremenljivke, ne da bi jo dejansko prijavili.
Spodnji primer kode daje tudi ustrezen rezultat. V tem primeru VBA samodejno obravnava spremenljivko kot podatkovni tip Variant. To se imenuje implicitna izjava.
Sub VariantVariable() Total_Marks = 444 MsgBox Total_Marks End Sub
Prednosti razglasitve spremenljivke
- Preprosto odpravljanje napak: Dobra praksa je, da spremenljivko prijavite pred uporabo. Omogoča nam zgodnejše razumevanje napak, kot so neusklajenost vrst in napake pri tipkanju, s čimer zmanjšuje tveganje odstopanja od logike programa.
- Boljša berljivost: Kot ekipa si bo veliko ljudi ogledalo kodo, razglasitev spremenljivke pa bo pomagala vsem s tipom vrednosti, ki naj bi jih sprejemala spremenljivka, uporabnikom pa tudi pomagala pri vnosu ustreznih vhodnih vrednosti med izvajanjem programa.
- Skladiščni prostor: Če spremenljivke ne deklarirate, jo VBA obravnava kot podatkovni tip Variant, ki zavzame največ prostora v pomnilniku (16 do 22 bajtov) v primerjavi z drugimi vrstami podatkov. Na primer če uporabljate spremenljivko tipa Byte, ki zavzame le 1 bajt, in če je ne prijavite, bo VBA na koncu rezerviral prostor 16 bajtov in s tem zapravil pomnilnik.
Možnost eksplicitno
Da zagotovimo, da so vse spremenljivke izrecno deklarirane, moramo pred njihovo uporabo uporabiti stavek Option Explicit. Uporabiti ga je treba na začetku katerega koli postopka v tem modulu.
Oglejmo si primer, ki ne uporablja eksplicitne izjave o možnostih.
Sub example3() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Izvedite kodo (pritisnite F5 ali zaženi gumb v orodni vrstici) in na koncu boste dobili prazno polje za sporočila.
Čeprav ste spremenljivko razglasili, ste zaradi napak v Msgbox Firt_Name končali v praznem polju z rezultati. Možnost Explicit nam bo pomagala pri odpravljanju takih napak.
Ponovimo isto kodo z uporabo eksplicitne možnosti. Pred začetkom postopka vnesite možnost Izrecno.
Option Explicit Sub VarientVariable() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Zdaj, če zaženete kodo (pritisnite F5 ali gumb Zaženi v orodni vrstici) in boste na koncu dobili napako prevajalnika.
VBA lahko dodate Možnost eksplicitno samodejno.
V urejevalniku VB Odprite Orodja -> Možnosti -> Izberite »Zahtevaj izjavo spremenljivke«.
Zdaj Možnost eksplicitno bo samodejno dodan vsakič, ko vstavite nov modul ali posnamete nov makro.
Opomba: Izrecna možnost ne bo dodana obstoječi kodi VBA. Po potrebi ga morate dodati ročno.
Dodelitev vrednosti spremenljivki
Vrednosti lahko spremenljivkam dodelite z enakim simbolom (=). Če se sklicujete na celico v Excelu, morate uporabiti funkcije Range.
Glejte spodnjo kodo.
Sub varValue() Dim var1 As Integer var1 = 10 Range('C1:C14').Value = var1 MsgBox var1 End Sub
V zgornjem primeru je var1 spremenljivka, ki vrednost 10 shrani neposredno z uporabo (=), funkcija Range pa bo pomagala vnesti vrednost var1, ki je 10 v Excelovi celici od C1 do C14.
Obseg spremenljivke
Vsaka spremenljivka v programu bo imela določen obseg. Ta obseg programu pove, na katerih področjih je vidna spremenljivka, tj. Modul ali funkcija, ki lahko spremenljivko uporablja ali ne.
VBA ima za spremenljivko opredeljene 3 vrste obsega.
- Obseg na ravni postopka
- Zasebni obseg na ravni modula
- Javni obseg na ravni modula
Obseg na ravni postopka
Spremenljivke, opredeljene v postopku, tj. V podfunkciji ali funkciji, jih bodo lahko uporabljale samo. Te niso vidne nobenemu drugemu postopku.
Primer:
Option Explicit Sub ProcScope() Dim msg As String vartext = 'Varible is visible only inside this Sub' MsgBox vartext End Sub Sub VarNotVisible() MsgBox vartext End Sub
Ko izvedete zgornjo kodo, bo msgbox za prvi Sub vrnil ustrezen rezultat, za drugega Sub pa bo vržena napaka prevajalnika. Ker je spremenljivka oglišča vidna samo za 1stin ne za 2nd. Ker smo uporabili eksplicitno možnost, bomo dobili napako prevajalnika, ker v 2. ni definiral spremenljivkndpod.


Zasebni obseg na ravni modula
Te spremenljivke so na voljo vsem postopkom v definiranem modulu. Privzeto so spremenljivke, deklarirane z Nobenega so zajeti kot zasebni. Za boljšo berljivost pa je priporočljivo dodati zasebno.
Oglejmo si isti primer, vendar bomo spremenljivko razglasili zunaj postopka.
Option Explicit Private vartext As String ‘ Dim vartext As String can also be used Sub PrivateScope() vartext = 'Varible is visible to all procedures' MsgBox vartext, ,”Result from Sub1” End Sub Sub VarIsVisible() MsgBox vartext, ,”Result from Sub2” End Sub
Po izvedbi boste videli, da bosta oba postopka vrnila ustrezne rezultate brez napak. Za boljše razumevanje smo v sporočilo msgbox dodali pravi naslov.
Obseg javnega modula
Te vrste spremenljivk so vidne vsem postopkom in v vseh modulih projekta. Vstavite 2 modula. (Z desno miškino tipko kliknite list in Vstavi -> moduli).
V en modul vnesite spodnjo kodo.
Option Explicit Public vartext As String Sub PrivateScope() vartext = 'Varible is visible to all modules' MsgBoxvartext, , 'Result from Sub1' End Sub
V 2. modul vnesite spodnjo kodo.
Option Explicit Sub VarIsVisible() MsgBoxvartext, , 'Result from Sub2' End Sub
Rezultati so prikazani spodaj
Poglejmo si praktični primer in bolje razumemo ves obseg.
Priložena je referenčna datoteka za zgornjo kodo.
Statična spremenljivka
Običajno se vrednost spremenljivke ohrani le od klica postopka do konca postopka. Ko se izvajanje postopka konča, vrednosti ne ohrani.
Na primer , v zgornji kodi se vrednost firstNo in secondNo odstrani takoj, ko se postopek konča, naslednjič, če zaženete kodo, firstNo in secondNo dobi enako vrednost, kot je določena v kodi.
Statične spremenljivke pa so tiste, ki bodo ohranile vrednost spremenljivke tudi po izvedbi. Statična spremenljivka je dovoljena samo znotraj podfunkcije ali funkcije.
Razmislite o spodnji kodi z nestatično spremenljivko.
Option Explicit Sub staticVariable() Dim count As Integer count = count + 1 Debug.Print count End Sub
Vsakič, ko pritisnete F5, boste kot rezultat dobili le 1.
Zdaj spremenljivko razglasimo za statično.
Option Explicit Sub staticVariable() Static count As Integer count = count + 1 Debug.Print count End Sub
Vsakič, ko zaženete kodo (F5), bo rezultat imel povečano vrednost za štetje, kot je 1,2,3 itd., Saj je statična spremenljivka ohranila svojo vrednost.
Opomba: Statična spremenljivka bo ohranila vrednost, dokler ne pritisnete gumba za ponastavitev v orodni vrstici ali zaprete delovnega zvezka.
Konstantna spremenljivka
Kot že ime pove, vrednosti teh spremenljivk med izvajanjem programa ni mogoče spremeniti. Ko je konstanta deklarirana, je ni mogoče spremeniti ali ji dodeliti nove vrednosti.
Izjava o konstanti se lahko izvede znotraj postopka ali na ravni modula (predvsem vsi postopki).
Option Explicit Sub constantVariable() Const SpeedLimitOfcar As String = '90kmph' Dim myCarSpeed As String myCarSpeed = '70kmph' If myCarSpeed > SpeedLimitOfcar Then MsgBox 'overspeed: Reduce the speed' Else MsgBox 'Within the limit: Always drive below : ' & SpeedLimitOfcar End If End Sub
Če poskušate spremeniti konstantno vrednost, se prikaže napaka pri prevajanju.
Option Explicit Sub ChangeConstantVariable() Const SpeedLimitOfcar As Integer = 90 SpeedLimitOfcar = SpeedLimitOfcar + 10 MsgBox SpeedLimitOfcar End Sub
Pogosta vprašanja
V # 1) Kako nastaviti javno spremenljivko v VBA?
Odgovor: Javne spremenljivke so deklarirane pred začetkom postopka. Med razglasitvijo spremenljivke je treba uporabiti javno ključno besedo.
Javna skupna_oznaka kot celo število
V # 2) Katere vrste spremenljivk ni mogoče prijaviti zunaj postopka?
Odgovor: Statičnih spremenljivk ni mogoče prijaviti zunaj postopka v VBA in prišlo bo do napake pri prevajanju.
V # 3) Kako prijaviti spremenljivko v VBA?
Odgovor: Ključna beseda Dim se uporablja za razglasitev spremenljivke. Dim pomeni Dimenzija.
Dim ime spremenljivke kot tip podatkov
V # 4) Kako celici v VBA dodeliti spremenljivko?
Odgovor: Uporabite lahko funkcijo Range.
var1 = 10
Obseg (“C1: C14”). Vrednost = var1
V # 5) Kaj so spremenljivke v VBA?
Odgovor: Spremenljivke so kot ograde za vrednosti v računalniškem pomnilniku. Spremenljivke lahko vsebujejo različne sorte vrednosti in te vrednosti se lahko med izvajanjem kode spremenijo. Vsaka spremenljivka bi morala imeti ime, z uporabo spremenljivke pa bo računalnik pridobil vrednost, dodeljeno tej spremenljivki.
V # 6) Ali morate v VBA prijaviti spremenljivko?
Odgovor: Izjava v VBA ni obvezna. Če spremenljivke ne prijavite in je ne uporabite neposredno v postopku, se imenuje implicitna izjava. Da bi se izognili napakam v kodi in za boljšo berljivost, je priporočljivo spremenljivko izrecno prijaviti.
V # 7) Kako v VBA prijavim več spremenljivk?
Odgovor: V enem stavku izjave lahko prijavite več spremenljivk. Določiti morate samo ime spremenljivke, ločeno z vejicami v enem stavku As.
kateri je najboljši brezplačni požarni zid za Windows 10
Zatemni FirstNo, SecondNo kot Integer
V enem stavku izjave lahko določite tudi različne spremenljivke. Vsaka spremenljivka bo za delom imena imena sprejela podatkovni tip, določen v klavzuli As.
Dim a, b Kot Single, c, d Kot Double, e Kot Integer, f As String
V # 8) Kdaj v VBA ne bi bilo nobene razlike med dim in private?
Odgovor: Če deklarirate zasebni obseg na ravni modula, potem ni razlike med razglasitvijo spremenljivke kot zatemnjene ali zasebne. Privzeto so spremenljivke, deklarirane z Nobenega so zajeti kot zasebni. Za boljšo berljivost pa je priporočljivo dodati zasebno.
V # 9) Kaj je spremenljivka na ravni modula?
Odgovor: Spremenljivke na ravni modula so lahko zasebne ali javne. Zasebne spremenljivke so na voljo za vse postopke v tem modulu in niso vidne nobenemu drugemu modulu. Javne spremenljivke so vidne vsem postopkom v vseh modulih v projektu.
Zaključek
Spremenljivka je ključnega pomena v katerem koli programskem jeziku. V tej vadnici smo videli, kaj so spremenljivke, kako jih prijaviti in uporabiti v programu. Raziskali smo tudi metodo Option Explicit, ki vsiljuje izvajanje eksplicitne izjave.
Razpravljali smo o različnih vrstah obsega spremenljivk, ki uporabnikom pomagajo določiti, katere dele kode je mogoče uporabiti. Spoznali smo uporabo statičnih spremenljivk, ki pomagajo ohranjati vrednost spremenljivke in spremenljivke Constant, ki pomagajo ohranjati vrednost spremenljivke nespremenjene.
=> Obiščite tukaj, če se želite naučiti VBA iz nič
Priporočeno branje
- Vadnica za Excel VBA - Uvod v VBA v Excelu
- Excelove matrike VBA in metode matrike s primeri
- Tipi podatkov VBA - številski in neštevilski tipi podatkov v VBA
- Python spremenljivke
- Spremenljivke v C ++
- Spremenljivke Java in njihove vrste s primeri
- Vrste podatkov in spremenljivke C # s primeri
- Spremenljivke VBScript: Kako prijaviti in uporabiti spremenljivke - VBScript Dim