Bejelentkezés Microsoft-fiókkal
Jelentkezzen be, vagy hozzon létre egy fiókot.
Üdvözöljük!
Válasszon másik fiókot.
Több fiókja van
Válassza ki a bejelentkezéshez használni kívánt fiókot.

Bevezetés

Ebből a cikkből megtudhatja, hogy miként használhatja a Microsoft Excel microsoftos részeljárások Visual Basic for Applications.

További információ

Változók egy al eljárásban

A programnyelvek egyik hatékony funkciója, hogy tárolhat valamit egy változóban, így a változó tartalmát felhasználhatja vagy később is meg lehet változtatni az eljárás során. Ez a dokumentum a következő változók használatát tárgyalja a Visual Basic:

  • A változók deklarálva.

  • A változót használható eljárások és projektek.

  • Egy változó élettartama.

Változó deklarálható egy makróban

A változók makróban való deklarálható legegyszerűbb módja a Dim utasítás használata. A következő sor két változót deklarál egész számként:

    Dim x As Integer, y As Integer

Ha az x és az y egész szám, akkor azt adja meg, hogy az Visual Basic elegendő memóriát külön tárol egy egész számváltozóhoz (2 bájt az x és az y változóhoz), és hogy az x vagy y értékben tárolt adatok egy-32768 és 32767 közötti egész számnak halmazai.

MEGJEGYZÉS: Ha egynél több változót deklarál egyetlen Dim utasítással, meg kell adnia az egyes változók adattípusát.

Ha nem adja meg az egyes változók adattípusát ( az alábbi Visual Basic kódban) , csak az y változó van beállítva egész változóként. Az x változó egy változótípus lesz:

    Dim x, y As Integer

További információt a lenti Variant adattípusok között olvashat.
 

Változó teszt elvégzéséhez kövesse az alábbi lépéseket:

  1. Mentse és zárja be a megnyitott munkafüzeteket, majd nyisson meg egy újat.

  2. Indítsa el a Visual Basic Szerkesztőt (nyomja le az ALT+F11 billentyűkombinációt).

  3. A Beszúrás menüben kattintson a Modul elemre.

  4. Írja be a következő kódot:

    Sub Variable_Test()
        Dim x As Integer, y As Integer
        x = 10
        y = 100
        MsgBox "az x értéke " & x & _
        Chr(13) & "az y értéke " & y
    End Sub

  5. Futtassa a Variable_Test makrót. A következő üzenet jelenik meg:

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

  6. Kattintson az OK gombra.

  7. A makróban Variable_Test az alábbi sort:

    x = 10

  8. a következőre:

    x = "error"

  9. Futtassa a Variable_Test makrót.

Futási időre hibaüzenetet kap, mert a "hiba" nem egész szám, és ezt a karakterláncértéket próbálja hozzárendelni az x egész változóhoz.
 

Adattípusok összegzése

Az alábbi változó adattípusok gyakoriak:

common variable data types

Variant adattípus

Ha egy változó deklarálása során nem ad meg adattípust, vagy egyáltalán nem deklarál egy változót sem, a Visual Basic automatikusan megadja a változó változó adattípusát. A következőek az ilyen adattípussal deklarált változók előnyei:

  • A változók karakterláncot, dátumot, időpontot, logikai vagy numerikus értékeket tartalmazhatnak.

  • A változók automatikusan tudják konvertálni a tartalmazott értékeket.

A hátránya az, hogy a változókhoz legalább 16 bájt memóriára van szükség. A memória 16 bájtja jelentős lehet a nagy eljárásokban és az összetett modulokban.

Ha meg tudja tudni, hogyan működik ez a Variable_Test makróban, kövesse az alábbi lépéseket:

Módosítsa a kódokat a makróban Variable_Test a következőre:

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

Futtassa a Variable_Test makrót.

Nem fog hibaüzenetet kapni, mert bármit hozzárendelhet az x és az y változókhoz.

MEGJEGYZÉS: Az alábbi sort ki is hagyhatja, és a makró akkor is működni fog, ha az x és az y változókat Variant adattípusként kezeli:

    Dim x, y

Egy változó hatóköre

Amikor deklarál egy változót, az látható lehet vagy nem látható más makróknak ugyanabban a modulban, más modulokban vagy más projektekben. Egy változónak a modulokban való rendelkezésre állását hatókörnek nevezzük. A hatókör három típusa az eljárásszintű, a privát modul- és a nyilvános modulszintű. A hatókör attól függ, hogy hogyan és hol deklarálja a változóit.

Eljárásszintű hatókör

Az eljárásszintű hatókörű változók nem láthatók azon az eljáráson kívül, amelyben deklarálták. Ha egy eljárásszintű hatókörű változó értékét adja meg, a változó tartalmát nem láthatják más makrók.

Ha meg kell erősítenie, hogy az eljárásszintű hatókörű változó nem látható azon az eljáráson kívül, amelyben deklarálva van, kövesse az alábbi lépéseket:

  1. Szúrjon be egy új modult a projektbe.

  2. Írja be a modulba az alábbi makrókat:
      Sub Macro1() Dim x As Egész x = 10 MsgBox "x, ahogyan a Makró1 is " & x "a következő sorban fut Macro2 Macro2 End Sub Macro2() MsgBox "x, ahogyan a Macro2 látható" & x End Sub

  3. Futtassa a Makró1 makrót, és a következő üzenet jelenik

    meg:x, as seen by Macro1 is 10

  4. Kattintson az OKgombra, és a következő üzenet jelenik meg:

    x, as seen by Macro2 is

  5. Kattintson az OK gombra.

A Makró2 nem jeleníti meg az x változó értékét, mert az x változó a Makró1 változó helyi értéke.

Privát és nyilvános modulszintű hatókör

A modul deklarációk szakaszában (a modul tetején, minden al eljárás fölött) definiálhat változókat, és a Public utasítás, a Dim utasítás vagy a Private utasítás használatával beállíthatja a változó hatókörét. Ha a Nyilvános utasítást a változó elé tette, a változó a projekt összes modulja összes makrója számára elérhető lesz. Ha a Dim vagy a Private utasítást a változó elé tette, a változó csak a deklarált modul makrói számára érhető el.

A Nyilvános utasítás és a Dim utasítás közötti különbségről az alábbi lépéseket követve láthatja:

  1. Mentse és zárja be a megnyitott munkafüzeteket, majd nyisson meg egy újat.

  2. Indítsa el a Visual Basic Szerkesztőt.

  3. Modul beszúrása a projektbe.

  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. Szúrjon be egy másik modult a projektbe.

  6. Írja be a következő kódot ebbe a modulba:


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

  7. Futtassa Macro_1a makrót az első modulban.

  8. Ha az x változó "Nyilvános x Egészként" van deklarálva, a projekt mindhárom makrója hozzáfér az x értékhez. Az első üzenetmező 10-es értéket jelenít meg. A második üzenetmező 20-as értéket jelenít meg (mivel az x-et megszorozza 2-vel Macro_1b). A harmadik üzenetmező 60-as értéket jelenít meg (mivel az x értéke az Macro_1b-ban 20-ra módosult, majd a Makró2-ben megszorzott 3-as értékkel).

  9. Módosítsa a deklaráció sorát az első modulban a következőről:

       Public x As Integer

    a következőre:

       Dim x As Integer

  10. Futtassa a Macro_1a makrót.

  11. Ha az x változó "Dim x As Egész" módban van deklarálva, csak az első modulban található makrók férnek hozzá az x értékhez. Ezért az első üzenetmező 10-et, a második üzenetmező 20-as értéket jelenít meg (mivel az x meg van szorozva 2-vel a Macro_1b), és a harmadik üzenetmező 0 értéket jelenít meg (mivel a Makró2 nem látja az x értéket, és a 2. makró a nulla nem inicializált értékét használja).

  12. Módosítsa a deklaráció sorát az első modulban a következőről:

      Dim x As Integer

    a következő:

        Private x As Integer

  13. Futtassa a Macro_1a makrót.

  14. Ugyanezek az üzenetmezők jelennek meg a Privát utasítás hatókörének használatával, mint a Dim utasítás használata esetén. Az x változó hatóköre megegyezik, és csak az a modul lesz privát, amelyben deklarálva van.


MEGJEGYZÉS: Ha azt szeretné, hogy a változó hatóköre arra a modulra korlátozódik, amelyben deklarálva van, a Dim utasítás helyett használja a Privatestatement utasítást. Mindkét alkalmazás ugyanazt a hatást éri el, de a Private utasítás használata esetén a kód olvasható, de a hatókör egyértelműbb.
 

Változó élettartama

Az az idő, amely alatt egy változó megtartja az értékét, az élettartamának nevezik. Egy változó értéke az élettartamán túl változhat, de megőrz egy értéket. Ha pedig egy változó hatóköre elveszíti a hatókörét, az már nem rendelkezik értékkel.
 

Változó értékének inicializálása

Makró futtatásakor az összes változó inicializálása egy értékre történik. A numerikus változókat nullára, a változó hosszúságú karakterláncokat nulla hosszúságú karakterláncba ("") inicializálja a program, a rögzített hosszúságú karakterláncokat pedig a 0 ASCII-kód tölti ki. A változók inicializálása Üres lesz. Az Üres változókat egy nulla képviseli numerikus környezetben, és egy nulla hosszúságú karakterlánc ("") egy karakterlánc környezetében.

Eljárásszintű változók

Ha egy változó a Dim utasítással van deklarálva egy makróban, a változó akkor is megőrzi az értékét, ha fut a makró. Ha a makró más makrókat hív meg, a változó értéke megőrzhető (a többi makró azonban nem érhető el), amennyiben ezek a többi makró is futnak.

Az eljárásszintű változók a következő lépéseket követve mutatják be:

  1. Szúrjon be egy új modult a projektbe.

  2. Írja be a modulba az alábbi makrókat:

    Sub Macro1()
        'set x as a procedure level variable
       Dim x As Integer
       MsgBox "az x inicializált értéke " & x
       x = 10
        MsgBox "x is " & x
        "A következő sorban a Makró2 fut
        Makró2
        MsgBox "x is still " & x
    End Sub
    Sub Macro2()
        MsgBox "x, ahogyan a Macro2 is " & x
    End Sub

  3. Futtassa a Makró1 makrót.

  4. A következő üzenet jelenik meg:

        the initialized value of x is 0

  5. Kattintson az OKgombra, és megjelenik az üzenet:

     x is 10

  6. Kattintson az OKgombra, és a következő üzenet jelenik meg:

    x, as seen by Macro2 is

  7. Kattintson az OK gombra.

  8. A Makró2 nem jeleníti meg az x változó értékét, mert az x változó a Makró1 változó helyi értéke. A következő üzenet jelenik meg:

    x is still 10

  9. Kattintson az OK gombra.

  10. Futtassa a Makró1 makrót.

A 3–6. lépésben leírt üzeneteket megkapja, mert amint a Makró1 a 6. lépésben leállt, az x változó értéke elveszett. Ezért ha a 7. lépésben újrafuttatja a Makró1 makrót, az első üzenet az x értéket nulla (az inicializált érték) jeleníti meg.

Statikus kulcsszó

Ha egy eljárásszintű változót a Static kulcsszóval deklarál, a változó a projekt visszaállításáig megőrzi annak értékét. Ezért ha statikus változója van, amikor legközelebb hívja az eljárást, a statikus változó inicializálódik az utolsó értékére.

A Static kulcsszó működését az alábbi lépésekkel láthatja el:

  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. Futtassa a Makró1 makrót.

  3. Megjelenik a következő üzenet:

    the initialized value of x is 0

  4. Kattintson az OKgombra, és megjelenik a következő üzenet:

    x is 10

  5. Kattintson az OK gombra.

  6. Futtassa a Makró1 makrót, és a következő üzenet jelenik

    meg:the initialized value of x is 10

  7. Kattintson az OKgombra, és a következő üzenet jelenik meg:

    x is 20

  8. Kattintson az OK gombra.

Az üzenetekben megjelenő értékek a második alkalommal különböznek, mivel az x változó statikus változóként van deklarálva, és a makró1 első futtatása után megőrzi az értékét.

MEGJEGYZÉS:  Ha van egy modulszintű változója, annak élettartama megegyezik egy statikus eljárásszintű változóval.

Egy modulszintű változó élettartamának ellenőrzéséhez kövesse az alábbi lépéseket:

  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. Futtassa a Makró1 makrót, és a következő üzenet jelenik meg:

    the initialized value of x is 0

  3. Kattintson az OK gombra, és a következő üzenet jelenik meg:

    x is 10

  4. Kattintson az OK gombra.

  5. Futtassa a Makró1 makrót, és a következő üzenet jelenik

    meg:the initialized value of x is 10

  6. Kattintson az OK gombra.

  7. A következő üzenet jelenik meg:

    x is 20

  8. Kattintson az OK gombra.

Az üzenetekben megjelenő értékek a második alkalommal különböznek, mivel az x változó statikus változóként van deklarálva, és a Macro1 első futtatása után megőrzi az értékét.
 

Projekt alaphelyzetbe állítása változók alaphelyzetbe állításhoz

Ha egy statikus változó vagy egy modulszintű változó értékét szeretné alaphelyzetbe állítani, kattintson az Alaphelyzet gombra
a Szokásos eszköztár, vagy kattintson a Futtatás menü Alaphelyzet parancsára.

Ha ezt a Makró1 projektben futtatja, majd újrafuttatja a Makró1 makrót,az x változó értékét a rendszer nullára inicializálja, és az első üzenet jelenik meg:

    the initialized value of x is 0

További segítségre van szüksége?

További lehetőségeket szeretne?

Fedezze fel az előfizetés előnyeit, böngésszen az oktatóanyagok között, ismerje meg, hogyan teheti biztonságossá eszközét, és így tovább.

A közösségek segítségével kérdéseket tehet fel és válaszolhat meg, visszajelzést adhat, és részletes ismeretekkel rendelkező szakértőktől hallhat.

Hasznos volt ez az információ?

Mennyire elégedett a fordítás minőségével?
Mi volt hatással a felhasználói élményére?
Ha elküldi a visszajelzést, a Microsoft felhasználja azt a termékei és szolgáltatásai továbbfejlesztéséhez. Az informatikai rendszergazda képes lesz ezeket az adatokat összegyűjteni. Adatvédelmi nyilatkozat.

Köszönjük a visszajelzését!

×