vba variables option explicit vba
Ovaj vodič objašnjava kako prijaviti i koristiti VBA varijable. Također naučite o eksplicitnim varijablama, opsegu varijabli, statičkim i konstantnim varijablama:
U računalu se sve vrijednosti podataka pohranjuju u memoriju ili pohranu računala. Da biste pristupili tim vrijednostima, trebate navesti ime pridruženo toj vrijednosti, koje se u programskim jezicima naziva varijabla.
U ovom uputstvu naučit ćemo kako deklarirati i definirati varijablu zajedno s raznim vrstama opsega varijabli, a također ćemo detaljno istražiti statičke i konstantne varijable.
=> Ovdje pogledajte kako biste vidjeli A-Z VBA vodiča za trening
Što ćete naučiti:
VBA varijable
Varijable su poput rezerviranih mjesta za vrijednosti u računalnoj pohrani. Varijable mogu sadržavati različite varijante vrijednosti i te se vrijednosti mogu mijenjati tijekom izvršavanja koda.
Svaka varijabla imat će ime koje se koristi za pristup vrijednosti. VBA ima određena ograničenja u pogledu odabira imena.
Dolje je naveden popis ograničenja:
- Ime vaše varijable ne može sadržavati više od 255 znakova.
- Naziv varijable ne može započeti brojem.
- Ne možete započeti s posebnim znakovima kao što su!, @, &,., # Ili ne možete imati razmake.
- Ključne riječi se ne smatraju imenom varijable.
Prevoditelj će izbaciti pogrešku ako prekršite ta ograničenja
Primjer:
Važeća imena varijabli: varName, Result12, First_Number
Nevažeća imena varijabli: 123abc, #number, Sub, abc.123
Prvi broj (razmak između riječi nije dopušten)
Proglašavanje VBA varijable
Moramo koristiti Nijedna ključna riječ za deklariranje varijable. Postoje dva odjeljka dok se proglašava varijabla. 1svje naziv varijable i 2ndje vrsta vrijednosti koju treba pohraniti u varijablu koja se naziva Tip podataka.
Sintaksa: Dim VariableName kao DataType
Primjer:
- Zatamni MyAge kao cjelovito
- Zacrni My_Percentage kao dvostruko
- Zatamni puno ime kao niz
Ovdje izričito kažete kompajleru da bi moja varijabla trebala pohranjivati samo ove vrste podataka, a VBA će osigurati da dobavi pogrešku neusklađenosti tipa kompajlera kada vrijednost definirana za varijablu ne odgovara tipu podataka.
Primjer:
Sub example1() Dim Total_Marks As Integer Total_Marks = “” MsgBox Total_Marks End Sub
Ali ako niste sigurni u vrstu podataka varijable, tada VBA omogućuje preskakanje tipa podataka. Valja i dolje navedena sintaksa.
Dim VariableName
Kada ne deklarirate tip podataka varijable, tada VBA to tretira kao tip podataka Variant i dužan je prihvatiti bilo koju vrstu cjelobrojnih podataka poput cijelog broja, niza, radne knjige itd. U istom programu, varijable varijable mogu prihvatiti vrijednost niza, cijelu vrijednost i bilo koji drugi tip.
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
Kako su Total_Marks varijabilna varijabla, za razliku od prethodnog koda, prevoditelj neće izbaciti pogrešku kao što je prikazano u nastavku.
Bilješka: Imajte na umu da VBA omogućuje upotrebu varijable bez da je zapravo prijavite.
Slijedeći primjer koda također daje odgovarajući rezultat. U ovom slučaju, VBA automatski tretira varijablu kao tip podataka Variant. To se naziva implicitna deklaracija.
Sub VariantVariable() Total_Marks = 444 MsgBox Total_Marks End Sub
Prednosti proglašenja varijablom
- Jednostavno otklanjanje pogrešaka: Dobra je praksa deklarirati varijablu prije nego što je upotrijebite. Pruža nam ranije razumijevanje pogrešaka poput neusklađenosti tipova i pogrešaka pri tipkarskoj grešci, čime se smanjuje rizik odstupanja od logike programa.
- Bolja čitljivost: Kao tim, mnogi će ljudi gledati kod, a proglašenje varijable pomoći će svima s vrstom vrijednosti koje se očekuje od varijable, a također će pomoći korisnicima da unesu odgovarajuće ulazne vrijednosti tijekom izvršavanja programa.
- Prostor za odlaganje: Ako ne deklarirate varijablu, tada je VBA tretira kao tip podataka Variant koji zauzima najveći prostor u memoriji (16 bajtova do 22 bajta) u usporedbi s drugim vrstama podataka. Na primjer, ako koristite varijablu tipa Byte koja uzima samo 1 bajt, a ako se ne izjasnite, VBA će na kraju rezervirati prostor od 16 bajtova, trošeći time memoriju.
Opcija eksplicitna
Da bismo osigurali da su sve varijable eksplicitno deklarirane, moramo upotrijebiti izraz Option Explicit prije nego što ih upotrijebimo. Treba ga koristiti na početku bilo kojeg postupka u tom modulu.
Pogledajmo primjer koji ne koristi eksplicitnu izjavu opcije.
Sub example3() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Izvršite kôd (pritisnite F5 ili pokrenite gumb na alatnoj traci) i na kraju ćete dobiti prazan okvir za poruke.
Iako ste proglasili varijablu, završili ste u praznom okviru s rezultatima zbog pogreške u grešci u Msgbox Firt_Name. Izrična opcija pomoći će nam u uklanjanju takvih pogrešaka.
Ponovimo isti kôd koristeći Option Explicit. Prije početka postupka unesite eksplicitno opciju.
Option Explicit Sub VarientVariable() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Sada ako izvršite kôd (pritisnite F5 ili gumb Pokreni na alatnoj traci) i na kraju ćete dobiti pogrešku kompajlera.
Možete natjerati VBA da doda Opcija eksplicitna automatski.
U VB Editoru, Idite na Alati -> Opcije -> Odaberite 'Zahtijeva deklaraciju varijable'.
Sada Opcija eksplicitna automatski će se dodati svaki put kada umetnete novi modul ili snimite novu makronaredbu.
Bilješka: Eksplicitna opcija neće se dodati postojećem VBA kodu. Ako je potrebno, morate ga dodati ručno.
Dodjeljivanje vrijednosti varijabli
Vrijednosti se mogu dodijeliti varijablama koristeći jednak simbol (=). Ako se pozivate na ćeliju u Excelu, tada morate koristiti funkcije Raspon.
Pogledajte donji kod.
Sub varValue() Dim var1 As Integer var1 = 10 Range('C1:C14').Value = var1 MsgBox var1 End Sub
U gornjem primjeru var1 je varijabla koja izravno pohranjuje vrijednost 10 pomoću (=), a funkcija Raspon pomoći će unijeti vrijednost var1 koja je 10 u Excel ćeliji C1 do C14.
Opseg varijable
Svaka varijabla u programu imat će definirani opseg. Ovaj opseg govori programu područja u kojima je varijabla vidljiva, tj. Modul ili funkcija koja može ili ne može koristiti varijablu.
VBA ima 3 vrste opsega definirane za varijablu.
- Opseg na razini postupka
- Privatni opseg na razini modula
- Javni opseg na razini modula
Opseg na razini postupka
Varijable definirane u postupku, tj. U pod-funkciji ili funkciji, moći će ih koristiti. Oni nisu vidljivi ni u jednom drugom postupku.
Primjer:
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
Kada izvršite gornji kôd, za prvi Sub msgbox će vratiti odgovarajući rezultat, ali za drugi Sub će se pojaviti pogreška kompajlera. Budući da je varijabla vrha vidljiva samo za 1svpod, a ne za 2nd. Kako smo koristili eksplicitnu opciju, dobit ćemo pogrešku kompajlera jer nismo definirali varijable u 2ndpod.


Privatni opseg na razini modula
Te su varijable dostupne svim postupcima u definiranom modulu. Prema zadanim postavkama, varijable deklarirane s Nijedna obuhvaćaju se kao privatne. No, preporučuje se dodavanje privatnog radi bolje čitljivosti.
Razmotrimo isti primjer, ali varijablu ćemo proglasiti izvan postupka.
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
Nakon izvršavanja vidjet ćete da će oba postupka vratiti ispravne rezultate bez ikakve pogreške. Radi jasnijeg razumijevanja dodali smo pravi naslov u msgbox.
Javni opseg na razini modula
Te su varijable vidljive svim postupcima i svim modulima projekta. Umetnite 2 modula. (Desnom tipkom miša pritisnite list i umetnite -> moduli).
Unesite donji kod u jedan modul.
Option Explicit Public vartext As String Sub PrivateScope() vartext = 'Varible is visible to all modules' MsgBoxvartext, , 'Result from Sub1' End Sub
Unesite donji kod u 2. modul.
Option Explicit Sub VarIsVisible() MsgBoxvartext, , 'Result from Sub2' End Sub
Rezultati su prikazani u nastavku
Razmotrimo praktični primjer i bolje shvatimo sav opseg.
U privitku je referentna datoteka za gornji kod.
Statička varijabla
Vrijednost varijable obično se čuva samo od poziva procedure do kraja procedure. Ne čuva vrijednost nakon završetka izvršenja postupka.
Na primjer , u gornjem kodu, vrijednost firstNo i secondNo uklanja se čim postupak završi, sljedeći put ako izvršite kôd, firstNo i secondNo dobije istu vrijednost kao što je definirana u kodu.
No, statičke varijable su one koje će zadržati vrijednost varijable čak i nakon izvršenja. Statička varijabla dopuštena je samo unutar podsustava ili funkcije.
Razmotrite donji kod s nestatičnom varijablom.
Option Explicit Sub staticVariable() Dim count As Integer count = count + 1 Debug.Print count End Sub
Svaki put kad pritisnete F5, dobit ćete samo 1 kao rezultat.
Sada proglasimo varijablu statičnom.
Option Explicit Sub staticVariable() Static count As Integer count = count + 1 Debug.Print count End Sub
Svaki put kada izvršite kôd (F5) Rezultat će imati povećanu vrijednost za brojanje poput 1,2,3 itd. Jer je statička varijabla zadržala svoju vrijednost.
Bilješka: Statička varijabla zadržat će vrijednost dok ne pritisnete gumb Poništi na alatnoj traci ili zatvorite radnu knjigu.
Stalna varijabla
Kao što i samo ime govori, vrijednost ovih varijabli ne može se mijenjati tijekom izvođenja programa. Jednom kada je konstanta deklarirana, ne može se mijenjati ili joj dodijeliti novu vrijednost.
Deklaracija konstante može se izvršiti unutar postupka ili na razini modula (prije svih postupaka).
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
Ako pokušate promijeniti konstantnu vrijednost, pojavit će se pogreška kompajliranja.
Option Explicit Sub ChangeConstantVariable() Const SpeedLimitOfcar As Integer = 90 SpeedLimitOfcar = SpeedLimitOfcar + 10 MsgBox SpeedLimitOfcar End Sub
Najčešća pitanja
P # 1) Kako postaviti javnu varijablu u VBA?
Odgovor: Javne varijable deklariraju se prije početka postupka. Pri deklariranju varijable mora se koristiti javna ključna riječ.
Javne ukupne oznake kao cjelovite
P # 2) Koju vrstu varijabli nije moguće deklarirati izvan procedure?
Odgovor: Statičke varijable ne mogu se deklarirati izvan procedure u VBA i dobit ćete pogrešku pri kompajliranju.
P # 3) Kako deklarirati varijablu u VBA?
Odgovor: Ključna riječ Dim koristi se za deklariranje varijable. Dim je kratica za Dimension.
Dim ime varijable kao tip podataka
P # 4) Kako dodijeliti vrijednost varijable ćeliji u VBA?
Odgovor: Možete koristiti funkciju Range.
var1 = 10
Raspon ('C1: C14'). Vrijednost = var1
P # 5) Koje su varijable u VBA?
Odgovor: Varijable su poput rezerviranih mjesta za vrijednosti u računalnoj pohrani. Varijable mogu sadržavati različite varijante vrijednosti i te se vrijednosti mogu mijenjati tijekom izvršavanja koda. Svaka varijabla trebala bi imati ime, koristeći ime varijable, računalo će dohvatiti vrijednost dodijeljenu toj varijabli.
P # 6) Morate li proglasiti varijablu u VBA?
Odgovor: Izjava je neobavezna u VBA. Ako ne deklarirate varijablu i ne upotrebljavate je izravno u postupku, ona se naziva Implicitna deklaracija. Da bi se izbjegle pogreške u kodu i radi bolje čitljivosti, preporučuje se eksplicitno deklarirati varijablu.
P # 7) Kako mogu prijaviti više varijabli u VBA?
Odgovor: U jednoj izjavi deklaracije možete prijaviti više varijabli. Samo trebate navesti ime varijable odvojeno zarezima u jednoj klauzuli As.
Java programiranje intervju pitanja i odgovori za iskusne
Zatamni prvo, drugo kao cjelovito
Također možete odrediti različite varijable u jednoj izjavi deklaracije. Svaka će varijabla uzimati tip podataka naveden u klauzuli As nakon dijela imena imena varijable.
Dim a, b kao pojedinačno, c, d kao dvostruko, e kao cjelobrojno, f kao niz
P # 8) Kada u VBA ne bi bilo razlike između prigušenog i privatnog?
Odgovor: Ako deklarirate privatni opseg na razini modula, tada nema razlike između deklariranja varijable kao prigušene ili privatne. Prema zadanim postavkama, varijable deklarirane s Nijedna obuhvaćaju se kao privatne. No, preporučuje se dodavanje privatnog radi bolje čitljivosti.
P # 9) Što je varijabla na razini modula?
Odgovor: Varijable na razini modula mogu biti privatne ili javne. Privatne varijable dostupne su za sve postupke u tom modulu i nisu vidljive nijednom drugom modulu. Javne varijable vidljive su svim postupcima u svim modulima u projektu.
Zaključak
Varijabla je presudna u bilo kojem programskom jeziku. U ovom uputstvu vidjeli smo što su varijable, kako ih prijaviti i koristiti u programu. Također smo istražili metodu Option Explicit koja prisiljava na provedbu eksplicitne deklaracije.
Razgovarano je o različitim vrstama opsega varijabli koje pomažu korisnicima da odrede koji dijelovi koda se varijabla može koristiti. Naučili smo upotrebu statičkih varijabli koja pomaže zadržati vrijednost varijable i konstantnih varijabli koje pomažu održati vrijednost varijable nepromijenjenom.
=> Posjetite ovdje da biste naučili VBA iz početka
Preporučena literatura
- Vodič za Excel VBA - Uvod u VBA u programu Excel
- Excel VBA niz i metode niza s primjerima
- VBA tipovi podataka - numerički i ne numerički tipovi podataka u VBA
- Python varijable
- Varijable u C ++
- Java varijable i njihove vrste s primjerima
- Vrste podataka i varijable C # s primjerima
- VBScript varijable: Kako prijaviti i koristiti varijable - VBScript Dim