Použití proměnných v sub-procedures Excel v aplikaci Visual Basic pro aplikace

Překlady článku Překlady článku
ID článku: 843144 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Úvod

Tento článek popisuje způsob použití proměnných v sub-procedures uzavřený v aplikaci Microsoft Visual Basic pro aplikace.

Další informace

Proměnné v proceduře sub

Výkonné funkce programovací jazyky je možnost uložení něco v proměnné tak, aby obsah proměnné lze použít, nebo lze změnit později v postupu. Tento dokument popisuje následující použití proměnných v jazyka:
  • Jak jsou deklaraci proměnných.
  • Postupy a projekty, které lze použít proměnné.
  • Doba života proměnnou.

Deklarovat proměnnou v makru

Nejjednodušším způsobem deklarovat proměnnou v makru je použití příkazu Dim. Následující řádek deklaruje dvě proměnné x a y, jako celá čísla:
Dim x As Integer, y As Integer
X a y zadaný jako celá čísla, oznamující jazyka nastavit vyhraďte dostatek paměti pro proměnnou celé číslo (2 bajty každý x a y) a informace uložené v x nebo y je celé číslo mezi -32768 a 32767.

Poznámka: Deklarovat více než jednu proměnnou pomocí jediného příkazu Dim musíte určit typ dat pro každou proměnnou.

Pokud zadáte typ dat pro každou proměnnou jako v následujícím kódu jazyka pouze proměnná y nastavit jako proměnná celé číslo. Proměnnou x, bude typ variant:
Dim x, y As Integer
Další informace naleznete v části "Typ dat Variant".

Provést proměnné test, postupujte takto:
  1. Uložte a zavřete všechny otevřené sešity a otevřete nový sešit.
  2. Spusťte Editor jazyka (stiskněte ALT + F11).
  3. V nabídce Vložit klepněte na modul.
  4. Zadejte následující kód:
    Sub Variable_Test()
    Dim x As Integer, y As Integer
    x = 10
    y = 100
    MsgBox "the value of x is " & x & _
    Chr(13) & "the value of y is " & y
    End Sub
  5. Spustit makro Variable_Test. Zobrazí se zpráva s těmito informacemi:
    hodnota x je 10
    hodnota y je 100
  6. Klepněte na tlačítko OK.
  7. V makru Variable_Test změnit následující řádek:
    x = 10
    

    Komu:
    x = "error"
    
  8. Spustit makro Variable_Test.
Protože „ chyba „ není celé číslo a pokoušíte přiřadit tuto řetězcovou hodnotu proměnné x celé číslo, zobrazí se chyba při spuštění.

Souhrn typ dat

Následující tabulka uvádí běžné proměnné datové typy:

Zmenšit tuto tabulkuRozšířit tuto tabulku
Typ datVelikost úložištěPovolený rozsah
Logická hodnota 2 bajty True nebo False
Celé číslo 2 bajty -32,768 32 767
Long 4 bajty -2,147,483,648 do 2 147 483 647
Dvojité 8 bajtů -1, 79769313486232E308 do - 4, 94065645841247E - 324 pro záporné hodnoty; 4, 94065645841247E - 324 do 1, 79769313486232E308 pro kladné hodnoty
Měny 8 bajtů -922,337,203,685,477.5808: 922,337,203,685,477.5807
Datum 8 bajtů Leden 1, 100 do 31 prosinec 9999
Řetězec Délka řetězce + 10 bajtů

Typ dat Variant

Pokud nezadáte datový typ Při deklarování proměnné nebo můžete není deklarování proměnné vůbec, jazyka automaticky určuje typ dat variant této proměnné. Výhody deklarován jako tento typ dat proměnné jsou následující:
  • Proměnné mohou obsahovat řetězec, datum, čas, Boolean nebo číselné hodnoty.
  • Proměnné lze převést hodnoty obsahovat automaticky.
Nevýhodou je varianty proměnné vyžadují alespoň 16 bajtů paměti. 16 bajtů paměti může být významné v procedurách velké nebo složité moduly.

Chcete-li zjistit, jak to funguje makro Variable_Test, postupujte takto:
  1. Změnit kód makro Variable_Test:
    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
    
  2. Spustit makro Variable_Test.
Protože lze přiřadit nic varianty proměnné neobdržíte chybě x a y.

Poznámka: Můžete také nechat mimo následující řádek a makra budou stále fungovat jako proměnných x a y jsou považovány za typy dat Variant:
Dim x, y

Rozsah proměnné

Při deklarování proměnné může nebo pravděpodobně není vidět podle dalších maker stejného modulu, jiných modulů nebo jiných projektů. Tato dostupnost proměnné v modulech je označován jako obor. Úroveň procedury, soukromé úrovni modulu, jsou tři typy oboru a veřejné úroveň modulu. Obor závisí na jak a kde deklarovat proměnné nebo proměnné.

Úroveň procedury oboru

Proměnné s rozsahem úroveň procedury není vidět mimo proceduru, kde je deklarována. Pokud nastavíte hodnotu proměnné, kterou má úroveň procedury oboru, obsah této proměnné není vidět podle dalších maker.

Ověřte, že proměnné s rozsahem úroveň procedury není vidět mimo proceduru, kde je deklarován, postupujte takto:
  1. Vložit nový modul do projektu.
  2. Do tohoto modulu zadejte obě následující makra:
    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. Spustit Macro1.

    Zobrazí se zpráva s těmito informacemi:
    je 10 x jako vidět Macro1
  4. Klepněte na tlačítko OK.

    Zobrazí se zpráva s těmito informacemi:
    je x jako vidět Macro2
  5. Klepněte na tlačítko OK.
Macro2 nezobrazuje hodnotu pro proměnnou x, protože proměnné x je místní Macro1.

Úroveň modulu oboru soukromé a veřejné

Definovat proměnné v sekci deklarací modulu (v horní části modulu výše všechny procedury typu sub) a nastavit obor vaše proměnné pomocí veřejné výkazu, Dim výkazu nebo Private příkazu. Pokud umístit veřejné výkazu začátek vaše proměnné vaše proměnné bude k dispozici všechna makra všech modulů v projektu. Umístit Dim výkazu nebo Private příkazu začátek vaše proměnné vaše proměnná je k dispozici pouze makra v modulu, kde ji deklarován.

Rozdíl mezi veřejné výkazu a Dim prohlášení zobrazit, postupujte takto:
  1. Uložte a zavřete všechny otevřené sešity a otevřete nový sešit.
  2. Spusťte Editor jazyka.
  3. Vložit modul do projektu.
  4. Do tohoto modulu zadejte následující kód:
    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. Vložení jiného modulu do projektu.
  6. Do tohoto modulu zadejte následující kód:
    Sub Macro2()
    x = x * 3
    MsgBox x
    End Sub
    
  7. Makro Macro_1a spustit v modulu první.

    Všechny tři makra v projektu s proměnnou x deklarován jako "Veřejné x As Integer" mají přístup k hodnota x. První zprávou zobrazí hodnotu 10. Druhý zprávou zobrazí hodnotu 20 (protože x vynásobena 2 Macro_1b). Třetí zprávou zobrazí hodnotu 60 (protože hodnota x byla změněna na 20 Macro_1b a potom byla vynásoben 3 Macro2).
  8. Změňte řádek deklarace v modulu první z:
    Public x As Integer

    Komu:
    Dim x As Integer
  9. Spustit makro Macro_1a.

    S proměnnou x deklarován jako "Dim x As Integer" pouze makra v modulu první mít přístup k hodnota x. Takže první zprávou zobrazí hodnotu 10, druhý zprávou zobrazí hodnotu 20, (protože x vynásobena 2 Macro_1b) a třetí zprávou zobrazí hodnotu 0 (protože Macro2 viz hodnota x a maker 2 používá neinicializovanou hodnotu nula).
  10. Změňte řádek deklarace v modulu první z:
    Dim x As Integer

    Komu:
    Private x As Integer
  11. Spustit makro Macro_1a.
Pomocí soukromé oboru výkazu jako jejich byly pomocí příkazu Dim jsou zobrazena políčka stejné zprávy. Proměnné x má stejný rozsah soukromé modulu, kde je deklarována.

Poznámka: Pokud chcete oboru proměnné být omezen na modul, kde je deklarován, použijte namísto příkazu DimPrivate výkazu. Obě stejného výsledku dosáhnete, ale při čtení kód, pokud použijete Private výkazu čistější oboru.

Životnost proměnná

Doba, během které proměnná zachová jeho hodnota je označován jako své životnosti. Přes své životnosti může změnit hodnotu proměnné, ale zachová hodnotu. Také při proměnnou ztratí oboru, již má hodnotu.

Inicializovat hodnotu proměnné

Při spuštění makra jsou inicializovány všechny proměnné na hodnotu. Číselná proměnná inicializována na nulu, řetězec proměnné délky inicializována na řetězec nulové délky (""), a řetězec pevné délky je vyplněn kód ASCII 0. Proměnné typu Variant jsou inicializovány prázdná. Prázdné proměnné je reprezentován nula v číselných kontextu a řetězec nulové délky ("") v kontextu řetězec.

Proměnné na úrovni procedury

Pokud máte proměnné deklarované v makru pomocí příkazu Dim, zachová proměnné jeho hodnota jako spuštění makra. Pokud toto makro volá ostatní makra, je zachován hodnotu proměnné (není k dispozici ostatní makra když) jako tato makra jsou také spuštěny.

K předvedení způsobu proměnné na úrovni procedury pracovat, postupujte takto:
  1. Vložit nový modul do projektu.
  2. Do tohoto modulu zadejte obě následující makra:
    Sub Macro1()
    'set x as a procedure level variable
    Dim x As Integer
       MsgBox "the initialized value of x is " & x
    x = 10
    MsgBox "x is " & x
    'the next line runs Macro2
    Macro2
    MsgBox "x is still " & x
    End Sub
    Sub Macro2()
    MsgBox "x, as seen by Macro2 is " & x
    End Sub
    
  3. Spustit Macro1.

    Zobrazí se zpráva s těmito informacemi:
    inicializována hodnota x je 0
  4. Klepněte na tlačítko OK.

    Zobrazí se zpráva s těmito informacemi:
    x je 10
  5. Klepněte na tlačítko OK.

    Zobrazí se zpráva s těmito informacemi:
    je x jako vidět Macro2
  6. Klepněte na tlačítko OK.

    Macro2 nezobrazuje hodnotu pro proměnnou x, protože proměnné x je místní Macro1. Zobrazí se zpráva s těmito informacemi:
    x je stále 10
  7. Klepněte na tlačítko OK.
  8. Spustit Macro1.
Obdržíte stejné zprávy, které jsou popsány v kroky 3 až 6, protože jako Macro1 zastavena v kroku 6, hodnotu proměnné x bylo ztraceno. Proto při znovu Macro1 krok 7 první zpráva zobrazuje hodnotu x jako nula (inicializována hodnota).

Statické klíčové slovo

Pokud proměnná na úrovni procedury je deklarován pomocí statické klíčové slovo, zachová proměnné jeho hodnotu, dokud obnovit projektu. Proto pokud máte statická proměnná při příštím volání do procedury, statická proměnná je inicializován poslední hodnota.

Chcete-li zjistit, jak funguje statické klíčové slovo, postupujte takto:
  1. Kód v Macro1 chcete změnit:
    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. Spustit Macro1.

    Zobrazí se zpráva s těmito informacemi:
    inicializována hodnota x je 0
  3. Klepněte na tlačítko OK.

    Zobrazí se zpráva s těmito informacemi:
    x je 10
  4. Klepněte na tlačítko OK.
  5. Spustit Macro1.

    Zobrazí se zpráva s těmito informacemi:
    je inicializována hodnota x 10
  6. Klepněte na tlačítko OK.

    Zobrazí se zpráva s těmito informacemi:
    x je 20
  7. Klepněte na tlačítko OK.
Hodnoty, které se zobrazí ve zprávách jsou různé podruhé, protože proměnné x je deklarován jako statická proměnná a proměnné zachová po spuštění Macro1 první čas jeho hodnotu.

Poznámka: Pokud máte proměnná na úrovni modulu, své životnosti je stejný, jako byly statická proměnná úroveň procedury.

Ověřit životnost proměnná na úrovni modulu, postupujte takto:
  1. Změnit kód v modulu, který obsahuje následující Macro1:
    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. Spustit Macro1.

    Zobrazí se zpráva s těmito informacemi:
    inicializována hodnota x je 0
  3. Klepněte na tlačítko OK.

    Zobrazí se zpráva s těmito informacemi:
    x je 10
  4. Klepněte na tlačítko OK.
  5. Spustit Macro1.

    Zobrazí se zpráva s těmito informacemi:
    je inicializována hodnota x 10
  6. Klepněte na tlačítko OK.

    Zobrazí se zpráva s těmito informacemi:
    x je 20
  7. Klepněte na tlačítko OK.
Hodnoty, které se zobrazí ve zprávách jsou různé podruhé, protože proměnné x je deklarován jako statická proměnná a zachová jeho hodnota po spuštění Macro1 první čas.

Obnovit projektu obnovit proměnné

Pokud chcete obnovit hodnotu statická proměnná nebo proměnná na úrovni modulu, klepněte na tlačítko Obnovit na panelu nástrojů Standardní nebo klepněte na tlačítko Obnovit v nabídce spuštění.

Pokud tomu Macro1 projektu a znovu spusťte Macro1 hodnota proměnné x je inicializována na nulu a zobrazí první zpráva:
inicializována hodnota x je 0
Další informace naleznete následujícím článku znalostní databáze Microsoft Knowledge Base:
843145Popis sub-procedures Excel v aplikaci Visual Basic pro aplikace (Arrays)
back to the top

Vlastnosti

ID článku: 843144 - Poslední aktualizace: 13. prosince 2006 - Revize: 3.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
Klíčová slova: 
kbmt kbvba kbprogramming kbinfo KB843144 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:843144

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com