Prijavite se pomoću Microsoft naloga
Prijavite se ili kreirajte nalog.
Zdravo,
Izaberite drugi nalog.
Imate više naloga
Odaberite nalog pomoću kojeg želite da se prijavite.

Uvod

Ovaj članak opisuje kako da koristite promenljive u Microsoft Excel pod procedurama u programu Microsoft Visual Basic za aplikacije.

Više informacija

Promenljive u pod proceduri

Moćna funkcija programskih jezika je mogućnost skladištenje nečega u promenljivoj, tako da sadržaj promenljive može da se koristi ili promeni kasnije u proceduri. Ovaj dokument govori o sledećoj upotrebi promenljivih u Visual Basic:

  • Kako su promenljive deklarisane.

  • Procedure i projekti koji mogu da koriste promenljivu.

  • Trajanje promenljive.

Declare a variable in a macro

Najjednostavniji način da deklarišemo promenljivu u makrou jeste da koristite izjavu Dim. Sledeći red deklariše dve promenljive, kao i brojeve:

    Dim x As Integer, y As Integer

Pošto su x i y navedeni kao celi brojevi, saopštavate programu Visual Basic da doda dovoljno memorije za promenljivu celog broja (2 bajta svaka za x i y) kao i da su informacije uskladištene u obe verzije x ili y ceo broj između -32768 i 32767.

NAPOMOGUĆENO: Ako deklarišete više promenljivih pomoću jedne dim izjave, morate da navedete tip podataka za svaku promenljivu.

Ako ne navedete tip podataka za svaku promenljivu, kao u sledećem Visual Basic kôd, samo promenljiva y je podešena kao promenljiva tipa broja. Promenljiva x će biti tip varijante:

    Dim x, y As Integer

Za dodatne informacije pogledajte tip podataka Varijanta u nastavku.
 

Da biste izvršili promenljivu promenljivu test, sledite ove korake:

  1. Sačuvajte i zatvorite sve otvorene radne sveske, a zatim otvorite novu radnu svesku.

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

  3. U meniju Umetanje izaberite stavku Modul.

  4. Otkucajte sledeći kôd:

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

  5. Pokrenite Variable_Test makro. Dobijate sledeću poruku:

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

  6. Kliknite na dugme U redu.

  7. U Variable_Test makroa promenite sledeći red:

    x = 10

  8. to:

    x = "error"

  9. Pokrenite Variable_Test makro.

Dobićete grešku tokom pokretanje zato što "greška" nije broj, a pokušavate da dodelite ovu vrednost niske promenljivoj za sve brojeve x.
 

Rezime tipa podataka

Ovo su uobičajeni tipovi promenljivih podataka:

common variable data types

tip podataka „Varijanta“

Ako ne navedete tip podataka kada deklarišete promenljivu ili uopšte ne deklarišete promenljivu, Visual Basic automatski navodi tip podataka promenljive za ovu promenljivu. Ovo su prednosti promenljivih koje su deklarisane kao ovaj tip podataka:

  • Promenljive mogu da sadrže nisku, datum, vreme, Bulove ili numeričke vrednosti.

  • Promenljive mogu da konvertuju vrednosti koje automatski sadrže.

Prednost je što promenljive promenljive zahtevaju najmanje 16 bajova memorije. 16 bajova memorije može biti značajno u velikim procedurama ili u složenim modulima.

Da biste videli kako ovo funkcioniše u Variable_Test makrou, pratite ove korake:

Promenite kôd u Variable_Test makrou na:

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 makro.

Grešku neće dobiti zato što možete da dodelite bilo šta varijantama promenljivih x i y.

NAPOMOGUĆENO: Možete i da izostite sledeći red i makro će i dalje raditi pošto se promenljive x i y tretiraju kao tipovi podataka Varijanta:

    Dim x, y

Scope of a variable

Kada deklarišete promenljivu, drugi makroi mogu je videti u istom modulu, u drugim modulima ili u drugim projektima. Ova dostupnost promenljive u modulima naziva se"škodu". Ta tri tipa su nivo procedure, privatni nivo modula i javni nivo modula. Opsezi zavise od toga kako i gde deklarišete promenljive ili promenljive.

Prognoza na nivou procedure

Promenljiva sa niskom nivoa procedure ne vidi se izvan procedure u kojoj je deklarisana. Ako postavite vrednost promenljive koja ima promenljivu u nivou procedure, drugi makroi neće videti njen sadržaj.

Da biste potvrdili da se promenljiva sa niskom nivoa procedure ne vidi izvan procedure u kojoj je deklarisana, pratite ove korake:

  1. Umetnite novi modul u projekat.

  2. U ovom modulu otkucajte oba sledeća makroa:
      Sub Macro1() Dim x As Integer x = 10 MsgBox "x, kao što vidi Macro1 je " & x 'sledeći red pokreće Macro2 Macro2 End Sub Macro2() MsgBox "x, kao što vidi Macro2 je " & x End Sub

  3. Pokrenite Makro1 i dobijate sledeću poruku:

    x, as seen by Macro1 is 10

  4. Kliknite nadugme U redu i dobijate sledeću poruku:

    x, as seen by Macro2 is

  5. Kliknite na dugme U redu.

Makro2 ne prikazuje vrednost za promenljivu x zato što je promenljiva x lokalna za vrednost Macro1.

Private and public module-level scope

Možete da definišete promenljive u odeljku deklaracija modula (na vrhu modula, iznad svih pod procedura) i da podesite promenljivu tako što ćete koristiti javnu izjavu, dim izjavu ili izjavu Privatno. Ako stavite javnu izjavu ispred promenljive, promenljiva će biti dostupna svim makroima u svim modulima u projektu. Ako stavite izjavu Dim ili Izjavu Privatno ispred promenljive, promenljiva je dostupna samo makroima u modulu u kojem je deklarisana.

Da biste videli razliku između izjave Javno i Dim, pratite ove korake:

  1. Sačuvajte i zatvorite sve otvorene radne sveske, a zatim otvorite novu radnu svesku.

  2. Pokrenite Visual Basic uređivača.

  3. Umetnite modul u projekat.

  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 projekat.

  6. Otkucajte sledeći kôd u ovom modulu:


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

  7. Pokrenite Macro_1a makro u prvom modulu.

  8. Sa promenljivom x deklarisanom kao "Javno x kao ceo broj", sva tri makroa u projektu imaju pristup vrednosti x. U prvom okviru poruke prikazuje se vrednost 10. Drugi okvir poruke prikazuje vrednost 20 (zato što se x množi sa 2 iz polja Macro_1b). Treće polje poruke prikazuje vrednost 60 (zato što je vrednost x promenjena u 20 u programu Macro_1b a zatim je pomnožena sa 3 u makrou Makro2).

  9. Promenite red za deklaraciju u prvom modulu iz:

       Public x As Integer

    to:

       Dim x As Integer

  10. Pokrenite makro Macro_1a"

  11. Sa promenljivom x deklarisanom kao "Dim x Kao Integer", samo makroi u prvom modulu imaju pristup vrednosti x. Tako da prvi okvir za poruku prikazuje vrednost 10, drugi okvir za poruku prikazuje vrednost 20 (zato što je x pomnožen sa 2 u programu Macro_1b), a treći okvir poruke prikazuje vrednost 0 (zato što Makro2 ne vidi vrednost x, a nepokrenuta vrednost nula koristi Makro 2).

  12. Promenite red za deklaraciju u prvom modulu iz:

      Dim x As Integer

    za:

        Private x As Integer

  13. Pokrenite makro Macro_1a"

  14. Isti okviri za poruke prikazuju se pomoću okvira privatne izjave kao što su koristili izjavu Dim. Promenljiva x ima isti promenljivu, privatnu u modulu gde je deklarisano.


NAPOMOGUĆENO: Ako želite da promenljiva bude ograničena na modul u kojem je deklarisan, koristite izjavu Privatestatement umesto izjave Dim. Oni i jedno i drugo postiže isti efekat, ali je opsezi jasniji kada pročitate kôd ako koristite izjavu Privatno.
 

Vek trajanja promenljive

Vreme tokom kojeg promenljiva zadržava svoju vrednost poznata je kao vek trajanja. Vrednost promenljive može da se promeni tokom njenog trajanja, ali će zadržati vrednost. Takođe, kad promenljiva izgubi promenljivu, ona više nema vrednost.
 

Pokretanje vrednosti promenljive

Kada pokrenete makro, sve promenljive se pokrećaju na vrednost. Numeričke promenljive se poriču do nule, niska promenljive dužine se inicijalizuje na nisku nulte dužine (""), a niska fiksne dužine se popunjava ASCII kodom 0. Promenljive varijabilnih varijabila počinjaju se na Prazno. Prazna promenljiva predstavljena je nulom u numeričkim kontekstom i niskom nulte dužine ("") u kontekstu niske.

Promenljive na nivou procedure

Ako imate promenljivu koja je deklarisana u makrou pomoću izjave Dim, promenljiva zadržava svoju vrednost sve dok je makro pokrenut. Ako ovaj makro poziva druge makroe, vrednost promenljive se zadržava (međutim, nije dostupna drugim makroima) sve dok su i ti drugi makroi pokrenuti.

Da biste pokazali kako rade promenljive na nivou procedure, pratite ove korake:

  1. Umetnite novi modul u projekat.

  2. Otkucajte oba sledeća makroa u ovom modulu:

    Sub Macro1()
        'set x as a procedure level variable
       Dim x As Integer
       MsgBox "početna vrednost x je " & x
       x = 10
        MsgBox "x je " & x
        "sledeći red pokreće Makro2
        Makro2
        MsgBox "x je i dalje " & x
    End Sub
    Sub Macro2()
        MsgBox "x, kao što vidi Makro2 je " & x
    End Sub

  3. Pokrenite Makro1.

  4. Dobićete sledeću poruku:

        the initialized value of x is 0

  5. Kliknite nadugme U redu i dobijate poruku:

     x is 10

  6. Kliknite nadugme U redu i dobijate sledeću poruku:

    x, as seen by Macro2 is

  7. Kliknite na dugme U redu.

  8. Makro2 ne prikazuje vrednost za promenljivu x zato što je promenljiva x lokalna za vrednost Macro1. Dobijate sledeću poruku:

    x is still 10

  9. Kliknite na dugme U redu.

  10. Pokrenite Makro1.

Dobijate iste poruke koje su opisane u koracima od 3 do 6 zato što je vrednost promenljive x izgubljena čim je Makro1 prestao da radi u 6. koraku. Stoga, kada ponovo pošaljete Makro1 u 7. koraku, prva poruka prikazuje vrednost x kao nulu (početna vrednost).

Statična ključna reč

Ako se promenljiva na nivou procedure deklariše pomoću statične ključne reči, promenljiva zadržava svoju vrednost dok se projekat ne uspostavi početnim vrednostima. Stoga, ako imate statičnu promenljivu, kad sledeći put pozovete proceduru, statična promenljiva se počinja na poslednju vrednost.

Da biste videli kako funkcioniše statična ključna reč, pratite 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. Pokrenite Makro1.

  3. Dobijate poruku: "the initialized value of x is 0

  4. Kliknite nadugme U redu i dobijate poruku:

    x is 10

  5. Kliknite na dugme U redu.

  6. Pokrenite Makro1 i dobijate sledeću poruku:

    the initialized value of x is 10

  7. Kliknite nadugme U redu i dobijate sledeću poruku:

    x is 20

  8. Kliknite na dugme U redu.

Vrednosti koje se pojavljuju u porukama razlikuju se po drugi put zato što je promenljiva x deklarisana kao statična promenljiva, a promenljiva zadržava svoju vrednost kada prvi put pokrenete Makro1.

NAPOMOGUĆENO:  Ako imate promenljivu na nivou modula, njeno trajanje je isto kao da je promenljiva na nivou statične procedure.

Da biste potvrdili trajanje promenljive na nivou modula, pratite 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 Makro1 i dobijate sledeću poruku:

    the initialized value of x is 0

  3. Kliknite na dugme U redu i dobijate sledeću poruku:

    x is 10

  4. Kliknite na dugme U redu,

  5. Pokrenite Makro1 i dobijate ovu poruku:

    the initialized value of x is 10

  6. Kliknite na dugme U redu.

  7. Dobijate sledeću poruku:

    "x is 20

  8. Kliknite na dugme U redu.

Vrednosti koje se u porukama pojavljuju drugi put se razlikuju zato što je promenljiva x deklarisana kao statična promenljiva i zadržava svoju vrednost kada prvi put pokrenete Makro1.
 

Resetuj projekat da bi se uspostavile početne vrednosti promenljivih

Ako želite da poništite vrednost za statičnu promenljivu ili promenljivu na nivou modula,
kliknite na dugme Uspostavi početne vrednosti na Standardna traka sa alatkama ili izaberite stavku Uspostavi početne vrednosti u meniju "Pokreni".

Ako to uradite za projekat Makro1, a zatim ponovo pokrenuti Makro1,vrednost promenljive x se vraća na nulu i dobijate prvu poruku:

    the initialized value of x is 0

Da li vam je potrebna dodatna pomoć?

Želite još opcija?

Istražite pogodnosti pretplate, pregledajte kurseve za obuku, saznajte kako da obezbedite uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na pitanja, dajete povratne informacije i čujete mišljenje od stručnjaka sa bogatim znanjem.

Da li su vam ove informacije koristile?

Koliko ste zadovoljni kvalitetom jezika?
Šta je uticalo na vaše iskustvo?
Kada kliknete na dugme Prosledi“, vaše povratne informacije će se koristiti za poboljšanje Microsoft proizvoda i usluga. Vaš IT administrator će moći da prikupi ove podatke. Izjava o privatnosti.

Hvala vam na povratnim informacijama!

×