Prijavite se pomoću Microsofta
Prijavi se ili izradi račun.
Zdravo,
Odaberite drugi račun.
Imate više računa
Odaberite račun putem kojeg se želite prijaviti.

Uvod

U ovom se članku opisuje kako koristiti varijable u Microsoft Excel pododjeljcima u aplikaciji Microsoft Visual Basic za aplikacije.

Dodatne informacije

Varijable u pod procedure

Snažna značajka programskih jezika mogućnost je pohrane u varijablu da bi se sadržaj varijable mogao koristiti ili kasnije promijeniti u postupku. U ovom se dokumentu razmatra sljedeće korištenje varijabli u Visual Basic:

  • Kako su varijable deklarirane.

  • Postupci i projekti koji mogu koristiti varijablu.

  • Vijek trajanja varijable.

Deklarirati varijablu u makronaredbi

Varijablu u makronaredbi najjednostavnije je deklarirati tako da koristite izjavu Dim. Sljedeći redak izjavljuje dvije varijable kao cijeli broj:

    Dim x As Integer, y As Integer

Ako su x i y navedeni kao cijeli brojevi, Visual Basic govorite da za varijablu cijelog broja (2 bajta svaki za x i y) postavi dovoljno memorije i da su podaci pohranjeni u x ili y cijeli broj između -32768 i 32767.

NAPOMENA: Ako deklarivate više varijabli pomoću jedne dim izjave, morate navesti vrstu podataka za svaku varijablu.

Ako ne odredite vrstu podataka za svaku varijablu, kao u sljedećem Visual Basic, kao varijabla y postavlja se kao varijabla cijeli broj. Varijabla x bit će vrsta varijante:

    Dim x, y As Integer

Dodatne informacije potražite u odjeljku Vrsta podataka Variant u nastavku.
 

Da biste izvršili test varijable, slijedite ove korake:

  1. Spremite i zatvorite sve otvorene radne knjige, a zatim otvorite novu radnu knjigu.

  2. Pokrenite uređivač Visual Basic (pritisnite ALT + F11).

  3. Na izborniku Umetanje kliknite Modul.

  4. Upišite sljedeći kod:

    Sub Variable_Test()
        Dim x As Integer, y As Integer
        x = 10
        y = 100
        MsgBox "vrijednost x je " & x & _
        Chr(13) & "vrijednost y je " & y
    End Sub

  5. Pokrenite Variable_Test makronaredbu. Primit ćete sljedeću poruku:

    the value of x is 10
    the value of y is 100

  6. Kliknite U redu.

  7. U makronaredbi Variable_Test promijenite sljedeći redak:

    x = 10

  8. na:

    x = "error"

  9. Pokrenite Variable_Test makronaredbu.

Primit ćete pogrešku s pokretanjem jer "pogreška" nije cijeli broj i pokušavate dodijeliti tu vrijednost niza varijabli cijeli broj x.
 

Sažetak vrste podataka

To su uobičajene vrste podataka varijabli:

uobičajene vrste podataka varijabli

vrsta podatka Variant

Ako ne navedete vrstu podataka kada deklarite varijablu ili uopće ne deklarite varijablu, Visual Basic automatski određuje vrstu podataka varijante za tu varijablu. Sljedeće su prednosti varijabli koje su deklarirane kao ova vrsta podataka:

  • Varijable mogu sadržavati nizove, datum, vrijeme, Booleove ili numeričke vrijednosti.

  • Varijable mogu automatski pretvoriti vrijednosti koje sadrže.

Nedostatak je u tome što varijable varijante zahtijevaju najmanje 16 bajta memorije. 16 bajta memorije može biti značajno u velikim postupcima ili složenim modulima.

Da biste vidjeli kako to funkcionira u Variable_Test, slijedite ove korake:

Promijenite kod u makronaredbi Variable_Test u:

Sub Variable_Test()
    Dim x, y
    x = "string"
    y = 1.23
    MsgBox "the value of x is " & x & _
    Chr(13) & "the value of y is " & y
End Sub

Pokrenite Variable_Test makronaredbu.

Nećete primiti pogrešku jer možete dodijeliti bilo što varijablama varijanti x i y.

NAPOMENA: Možete i ostaviti sljedeći redak, a makronaredba će i dalje funkcionirati kao varijable x i y tretiraju se kao vrste podataka Variant:

    Dim x, y

Opseg varijable

Kada deklarite varijablu, druge makronaredbe u istom modulu, drugim modulima ili drugim projektima mogu je vidjeti ili ne mogu vidjeti. Ta se dostupnost varijable u modulima naziva opsegom. Tri vrste opsega su razina procedure, privatna razina modula i javna razina modula. Opseg ovisi o tome kako i gdje deklarirati varijable ili varijable.

Opseg na razini postupka

Varijabla s opsegom na razini postupka ne vidi se izvan postupka u kojem je deklarirana. Ako postavite vrijednost varijable s opsegom razine procedure, ostale makronaredbe neće vidjeti sadržaj te varijable.

Da biste provjerili ne vidi li se varijabla s opsegom na razini postupka izvan postupka u kojem je deklarirana, slijedite ove korake:

  1. Umetnite novi modul u projekt.

  2. U ovaj modul upišite obje sljedeće makronaredbe:
      Sub Macro1() Dim x As Integer x = 10 MsgBox "x, as seen by Macro1 is " & x 'the next line runs Macro2 Macro2 End Sub Sub Macro2() MsgBox "x, as seen by Macro2 is " & x End Sub

  3. Pokrenite Makronaredbu1 i vidjet ćete sljedeću poruku:

    x, as seen by Macro1 is 10

  4. Kliknite Uredu , a zatim ćete dobiti sljedeću poruku:

    x, as seen by Macro2 is

  5. Kliknite U redu.

Makronaredba2 ne prikazuje vrijednost varijable x jer je varijabla x lokalna na Makronaredbu1.

Opseg privatnog i javnog modula

Varijable možete definirati u odjeljku deklaracija modula (pri vrhu modula, iznad svih pod procedura) i postaviti opseg varijable pomoću javne izjave, izjave Dim ili izjave Privatno. Ako javnu izjavu stavite ispred varijable, varijabla će biti dostupna svim makronaredbama u svim modulima u projektu. Ako ispred varijable stavite dim ili privatnu izjavu, varijabla je dostupna samo makronaredbama u modulu u kojem se deklarirana.

Da biste vidjeli razliku između javne izjave i izjave Zatamnjenje, slijedite ove korake:

  1. Spremite i zatvorite sve otvorene radne knjige, a zatim otvorite novu radnu knjigu.

  2. Pokrenite uređivač Visual Basic.

  3. Umetnite modul u projekt.

  4. Type the following code into this module:
    
    Public x As Integer
    Sub Macro_1a()
        x = 10
        MsgBox x
        Macro_1b
    End Sub
    Sub Macro_1b()
        x = x * 2
        MsgBox x
        Macro2
    End Sub
  5. Umetnite drugi modul u projekt.

  6. U ovaj modul upišite sljedeći kod:


    Sub Macro2()     x = x * 3
        MsgBox x
    End Sub

  7. Pokrenite Macro_1a makronaredbu u prvom modulu.

  8. Uz varijablu x deklariranu kao "Javni x kao cijeli broj", sve tri makronaredbe u projektu imaju pristup vrijednosti x. U okviru prve poruke prikazuje se vrijednost 10. U drugom se okviru s porukom prikazuje vrijednost 20 (jer se x množi s 2 u Macro_1b). U okviru treće poruke prikazuje se vrijednost 60 (jer je vrijednost x promijenjena u 20 u Macro_1b a zatim je pomnožena s 3 u makronaredbi2).

  9. Promijenite redak deklaracije u prvom modulu iz:

       Public x As Integer

    na:

       Dim x As Integer

  10. Pokrenite Macro_1a makronaredbu.

  11. Uz varijablu x deklariranu kao "Dim x Kao cijeli broj", samo makronaredbe u prvom modulu imaju pristup vrijednosti x. U okviru prve poruke prikazuje se vrijednost 10, u drugom se okviru poruke prikazuje vrijednost 20 (jer se x množi s 2 u Macro_1b), a u okviru treće poruke prikazuje se vrijednost 0 (jer Makronaredba2 ne vidi vrijednost x, a neinicijaliziranu vrijednost nule koristi makronaredba 2).

  12. Promijenite redak deklaracije u prvom modulu iz:

      Dim x As Integer

    na sljedeće:

        Private x As Integer

  13. Pokrenite Macro_1a makronaredbu.

  14. Isti se okviri poruka prikazuju pomoću opsega privatne izjave kao i naredba Zatamnjenje. Varijabla x ima isti opseg, privatno za modul u kojem je deklarirana.


NAPOMENA: Ako želite da opseg varijable bude ograničen na modul u kojem je deklarirana, koristite Privatestatement umjesto izjave Dim. Oba efekta postižu isti učinak, ali je opseg jasniji kada pročitate kod ako koristite privatnu izjavu.
 

Vijek trajanja varijable

Vrijeme tijekom kojeg varijabla zadržava svoju vrijednost naziva se vijekom trajanja. Vrijednost varijable može se promijeniti tijekom trajanja, ali će zadržati vrijednost. Osim toga, kada varijabla izgubi opseg, više nema vrijednost.
 

Inicijalizacija vrijednosti varijable

Kada pokrenete makronaredbu, sve varijable se inicijaliziraju na vrijednost. Numerička varijabla inicijalizira se na nulu, niz promjenjive duljine inicijalizira se na niz nulte duljine ("), a niz fiksne duljine ispunjen je ASCII kodom 0. Varijable varijanti inicijaliziraju se na Prazno. Prazna varijabla predstavljena je nulom u numeričkom kontekstu i nizom nulte duljine ("") u kontekstu niza.

Varijable razine procedure

Ako imate varijablu koja je deklarirana u makronaredbi pomoću izjave Dim, varijabla zadržava njezinu vrijednost sve dok je makronaredba pokrenuta. Ako makronaredba poziva druge makronaredbe, vrijednost varijable zadržava se (iako nije dostupna drugim makronaredbama) sve dok se te druge makronaredbe izvode.

Da biste pokazali kako funkcioniraju varijable na razini postupka, slijedite ove korake:

  1. Umetnite novi modul u projekt.

  2. U ovaj modul upišite obje sljedeće makronaredbe:

    Sub Macro1()
        "set x as a procedure level variable
       Dim x As Integer
       MsgBox "inicijalizirana vrijednost x je " & x
       x = 10
        MsgBox "x je " & x
        'the next line runs Macro2
        Makronaredba2
        MsgBox "x je i dalje " & x
    End Sub
    Pod macro2()
        MsgBox "x, kao što je vidio Macro2 je " & x
    End Sub

  3. Pokreni makronaredbu 1.

  4. Primit ćete sljedeću poruku:

        the initialized value of x is 0

  5. Kliknite Uredu , a zatim ćete dobiti poruku:

     x is 10

  6. Kliknite Uredu , a zatim ćete dobiti sljedeću poruku:

    x, as seen by Macro2 is

  7. Kliknite U redu.

  8. Makronaredba2 ne prikazuje vrijednost varijable x jer je varijabla x lokalna na Makronaredbu1. Prikazuje se sljedeća poruka:

    x is still 10

  9. Kliknite U redu.

  10. Pokreni makronaredbu 1.

Primate iste poruke opisane u koracima od 3. do 6. jer čim je Makronaredba1 prestala funkcionirati u šestom koraku, vrijednost varijable x je izgubljena. Stoga, kada ponovno pokrenite Makronaredbu1 u 7. koraku, prva poruka prikazuje vrijednost x kao nulu (inicijalizirana vrijednost).

Statična ključna riječ

Ako se varijabla na razini postupka deklarira pomoću statičke ključne riječi, varijabla zadržava njezinu vrijednost dok se projekt ne vrati na izvorno. Stoga, ako imate statičnu varijablu, kada sljedeći put nazovete proceduru, statička varijabla inicijalizira se na zadnju vrijednost.

Da biste vidjeli kako funkcionira statična ključna riječ, slijedite ove korake:

  1. Change the code in Macro1 to:
    
    Sub Macro1()
        'set x as a procedure level variable
        Static x As Integer
           MsgBox "the initialized value of x is " & x
        x = x + 10
        MsgBox "x is " & x
    End Sub
  2. Pokreni makronaredbu 1.

  3. Prikazuje se poruka:

    the initialized value of x is 0

  4. Kliknite Uredu , a zatim ćete dobiti poruku:

    x is 10

  5. Kliknite U redu.

  6. Pokrenite makronaredbu1 i prikazuje vam se sljedeća poruka:

    the initialized value of x is 10

  7. Kliknite Uredu , a zatim ćete dobiti sljedeću poruku:

    x is 20

  8. Kliknite U redu.

Vrijednosti koje se pojavljuju u porukama razlikuju se po drugi put jer je varijabla x deklarirana kao statična varijabla, a varijabla zadržava njezinu vrijednost kada prvi put pokrenete Macro1.

NAPOMENA:  Ako imate varijablu razine modula, njegov je vijek trajanja jednak statičnoj varijabli razine procedure.

Da biste provjerili vijek trajanja varijable razine modula, slijedite ove korake:

  1. Change the code in the module that contains Macro1 to the following:
    
    Dim x As Integer  'create a module-level variable
    Sub Macro1()
       MsgBox "the initialized value of x is " & x
       x = x + 10
       MsgBox "x is " & x
    End Sub
  2. Pokrenite makronaredbu1 i vidjet ćete sljedeću poruku:

    the initialized value of x is 0

  3. Kliknite U redu, a zatim ćete dobiti sljedeću poruku:

    x is 10

  4. Kliknite U redu,

  5. Pokrenite makronaredbu 1 i vidjet ćete ovu poruku:

    the initialized value of x is 10

  6. Kliknite U redu.

  7. Primit ćete sljedeću poruku:

    x is 20

  8. Kliknite U redu.

Vrijednosti koje se pojavljuju u porukama razlikuju se drugi put jer je varijabla x deklarirana kao statična varijabla i zadržava njezinu vrijednost nakon prvog pokretanje makronaredbe Macro1.
 

Ponovno postavljanje projekta na izvorne varijable

Ako želite vratiti vrijednost za statičnu varijablu ili varijablu razine modula, kliknite gumb Vrati izvorno na
Standardna alatna traka ili na izborniku Pokreni kliknite Vrati izvorno.

Ako to učinite za projekt Macro1, a zatim ponovno pokrenite makronaredbu Macro1,vrijednost varijable x inicijalizira se natrag na nulu i primit ćete prvu poruku:

    the initialized value of x is 0

Potrebna vam je dodatna pomoć?

Želite dodatne mogućnosti?

Istražite pogodnosti pretplate, pregledajte tečajeve za obuku, saznajte kako zaštititi uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na njih, pošaljete povratne informacije i čujete se sa stručnjacima s bogatim znanjem.

Jesu li vam ove informacije bile korisne?

Koliko ste zadovoljni jezičnom kvalitetom?
Što je utjecalo na vaše iskustvo?
Ako pritisnete Pošalji, vaše će se povratne informacije iskoristiti za poboljšanje Microsoftovih proizvoda i usluga. Vaš će IT administrator moći prikupiti te podatke. Izjava o zaštiti privatnosti.

Hvala vam na povratnim informacijama!

×