Jste zde: Úvodní stránka » excel » vba-teorie-zaklady » promene-excel-vba
Proměnné ve VBA - MS Excel
... neplýtvejte zbytečně místem ...
Úvodem do proměných ve VBA
Při psaní maker je vhodné v úvodu deklarovat proměnné. Sice VBA funguje bez tohoto deklarování, ale zbytečně alokuje pro proměnou větší prostor než je potřeba. Pro malé skripty to nevadí, ale u složitějších programů se bez deklaraci neobejdeme. Jinak si spomalíme výpočet.
Jaký popis proměných zvolit
... jasně a výstižně bez diakritiky ...
Název musí být vystižný. Tak aby bylo jasné o jaký parametr jde.
- aaa, bb, cc, x, y, z - z tohohle se těžko něco pozná o jakou proměnu jde
- In_DelkaHrany, In_SirkaHrany - z názvu lze poznat o co se jedná a o jaký typ jde.
Doporučuji používat názvy proměnných bez diakritiky. Každé slovo začínat velkým písmenem. V názvu proměnné označit její typ.
Výhody oceníte při hledání chyb, či doplňování skriptu po půl roce.
Typy pro platnost
Kromě deklarace správného typu je potřeba deklarovat platnost.
- Static - Statická proměnná dokud pro danou proceduru, zachovává si platnost.
- Public - Ve všech modulech a procedurách zachovává si platnost i po skončení danné procedury.
- Private - dostupné pro všechny procedury v daném modulu
- Dim - dostupné pro jednu proceduru v daném modulu. Jen když tento modul běží.Nebo pro procedury v danném modulu. Záleží kde je deklarace uvedena.
Příklad platnost proměnné
Než to složitě vysvětlovat v čem se proměnné liší uvedu příklda dvou kódu. Pokud si je spustíte bude Vám to jasné:
Sub PlatnostPromenne1()
Dim HodnotaLg1 As Long
HodnotaLg = HodnotaLg + 1
MsgBox "HodnotaLg = " & HodnotaLg
End Sub
Sub PlatnostPromenne2()
Static HodnotaLg As Long
HodnotaLg = HodnotaLg + 1
MsgBox "HodnotaLg = " & HodnotaLg
End Sub
Pokud několikrát spustíte první kód bude HodnotaLg stále rovná jedné, ale u druhého kódu se bude hodnota HodnotaLg postupně zvyšovat.
Takže ač se proměnná HodnotaLg jmenuje v obou procedurách stejně jde o různou proměnnou. Procedury můžete spouštět na sřídačku.
Platnost proměnné pro celý modul
Trochu si to zamotáme.
Takže teď použijeme proměnnou společnou pro modul
Dim ModHodnotaLg As Long
Sub PlatnostPromenne11()
ModHodnotaLg = ModHodnotaLg + 1
MsgBox "ModHodnotaLg = " & ModHodnotaLg
End Sub
Sub PlatnostPromenne12()
ModHodnotaLg = ModHodnotaLg + 10
MsgBox "ModHodnotaLg = " & ModHodnotaLg
End Sub
Teď už se bude ModHodnotaLg zvyšovat o jedna nebo deset v závislosti který příklad spustíte.
Veřejná platnost proměnné
Uvidí ji procedury ve všech modulech.
Public PubHodnotaLg As Long
Sub PlatnostPromenne31()
PubHodnotaLg = PubHodnotaLg + 1
MsgBox "PubHodnotaLg = " & PubHodnotaLg
End Sub
Předpokládám, že příklady objasnily jak platnost proměnné funguje.
Pozor důsledně deklarovat názvy. Protože proměnná v proceduře má vyšší prioritu než ta modulová. Aby při předávání nedošlo k problémum. Z osobní zkušenosti vím, že tato chyba se hledá velice dlouho...
Pozor při deklaraci. ať není jiná deklarace než myslíte..
Dim a, b As Integer
a není typu Integer jak možná myslíte, ale je typu Variant, protože jeho typ nebyl deklarován, b je typu Integer. Správně je následující:
Dim a As Integer, b As Integer
Datové typy
Jak jsem již psal ač Excel umí přiřazovat datum typ automaticky. Nevýhodou je horší využití paměti. Takže představím datové typy jež jsou v Excelu:
| Datové typy | Počet bajtů | Rozsah hodnot |
|---|---|---|
| Boolean | 2 bajty | TRUE/FALSE |
| Byte | 1 bajt | 0 – 255 |
| Integer | 2 bajty | –32.768 – 32.767 |
| Long | 4 bajty | – 2.147.483.648 – 2.147.483.647 |
| Single | 4 bajty | |
| Double | 8 bajtů | |
| Currency | 8 bajtů | |
| Decimal | 14 bajtů | |
| Date | 8 bajtů | 1.leden 0100 – 31.prosinec 9999 |
| Object | 4 bajty | Odkaz |
| String (proměnná délka) | 10 bajtů + délka řetězce | 0 – 2miliardy |
| String (pevná délka) | délka řetězce | 1 až 65000 |
| Variant (s čísly) | 16 bajtů | |
| Variant (se znaky) | 22 bajtů + délka řetězce | 0 – 2miliardy |
Proměnná Boolean
Obsahuje hodnotu TRUE nebo FALSE. Jako výsledek rozhodovacích procesu, nebo návratová hodnota některých funkcí. Jde o logickou hodnotu (1,0), (PRAVDA,NEPRAVDA.
Příklad využití proměnné Boolean
IF Boolean THEN
MsgBox "je TRUE"
ELSE
MsgBox "je FALSE"
END IF
Datový typ Boolean
Proměnné typu Boolean se ukládaji jako 16-bitová (2-bajtová) čísla, ale mohou nabývat pouze hodnot True nebo False.
Proměnné typu Boolean se zobrazují buď jako True nebo False (je-li použit příkaz Print), Použitím klíčových slov True a False se proměnným typu Boolean přiřazuje jeden z těchto stavů.
Jsou-li převáděny jiné číselné typy na typ Boolean, převede se 0 na False a všechny ostatní hodnoty se převedou na True. Jsou-li převáděny hodnoty typu Boolean na jiné datové typy, převede se False na hodnotu 0 a True na hodnotu -1.
Datový typ Byte
Byte se ukládá jako 8-bitová (1-bajtové) číslo bez znamínka, hodnoty jsou v rozsahu od 0 do 255.
Vhodný pro ukládání binárních dat.
Datový typ Currency
Proměnné typu Currency jsou uloženy jako 64-bitová (8-bajtová) čísla, která jsou zvětšena 10.000 krát. Takže máme 15 číslic nalevo a 4 číslic napravo od desetinné čárky. Znázorněníme čísela v rozsahu od -922.337.203.685.477,5808 do 922.337.203.685.477,5807.
Typ Currency je vhdný pro finanční výpočty.
Datový typ Date
Date se ukládá jako 64-bitová (8-bajtová) čísla s pohyblivou desetinnou čárkou. Znázorňuje datum od 1. ledna 100 do 31. prosince 9999 a čas od 0:00:00 do 23:59:59.
Proměnné typu Date zobrazují datumy dle lokálního nastavení v PC. Čas se zobrazuje buď v 12-hodinovém nebo 24-hodinovém taktu.
Jestliže jsou jiné datové typy převáděny na typ Date, potom nalevo od desetinné čárky je datum a napravo od desetinné čas. Půlnoc je 0,0 a poledne hodnotou 0,5.
Datový typ Decimal
Proměnné typu Decimal se ukládají jako 96-bitova (12-bajtová) celá čísla (bez znaménka). Čísla jsou zvětšená proměnlivou mocninou čísla 10, která představuje zvětšovací faktor (určuje počet číslic napravo od desetinné čárky v rozmezí od 0 do 28). Nula = žádná desetinná místa. Rozsah je tedy od +/- 79 228 162 514 264 337 593 543 950 335. Pro 28 desetinných míst je rozsah +/-7,9228162514264337593543950335. nejmenší hodnota je +/-0,0000000000000000000000000001.
Poznámka: V současnosti může být datový typ použit pouze v rámci typu Variant, Tj .vytvořit proměnnou typu Variant, která obsahuje podtyp Decimal, a to použitím funkce CDec.
Datový typ Double
Proměnné typu Double se ukládají jako 64-bitová (8-bajtová) čísla s pohyblivou desetinnou čárkou (standard IEEE) v rozsahu od -1,79769313486232E308 do -4,94065645841247E-324 pro záporná čísla. Od 4,94065645841247E-324 do 1,79769313486232E308 pro kladná čísla.
Datový typ Integer
Proměnné typu Integer se ukládají jako 16-bitová (2-bajtová) čísla v rozsahu hodnot od -32 768 do 32 767.
Proměnná typu Integer se používá pro vyjádření výčtových typů.
Datový typ Long
Proměnná typu Long (dlouhé celé číslo) se ukládá jako 32-bitové (4-bajtové) číslo se znaménkem. Je od - 2 147 483 648 do 2 147 483 647.
Datový typ Object
Proměnná typu Object se ukládá jako 32-bitová (4-bajtové) adresy odkazující na objekty.
Datový typ Single
Proměnná typu Single (s pohyblivou desetinnou čárkou s jednoduchou přesností). Ukládá promměné jako 32-bitová (4-bajtová) čísla s pohyblivou desetinnou čárkou. Rozsahu od -3,402823E38 do -1,401298E-45 pro záporná čísla a od 1,401298E-45 do 3,402823E38 pro kladná čísla.
Datový typ String
Existují dva druhy řetězců:
- Řetězce s proměnlivou délkou mohou obsahovat přibližně až 2 miliardy (2^31) znaků.
- Řetězce s pevnou délkou mohou obsahovat od 1 znaku až do přibližně 64K (2^16) znaků.
Poznámka: Řetězec s pevnou délkou typu Public nemůže být použit v modulu třídy.
Kódy znaků pro typ String se nacházejí v rozsahu od 0 do 255. Prvních 128 znaků (0–127) znakové sady odpovídá písmenům a symbolům na standardní americké klávesnice (US). Druhá skupina 128 znaků (128–255) obsahuje zvláštní znaky, jako písmena jiných národních abeced, interpunkční znaménka, měnové symboly a zlomky.
Datový typ Variant
Datový typ Variant je datový typ pro všechny proměnné výslovně nedeklarované jako některý předchozí datový typ.
Typ Variant je zvláštní datový typ, který může obsahovat libovolný druh dat (kromě String s pevnou délkou a uživatelských typů). Navíc může typ Variant obsahovat zvláštní hodnoty Empty, Error, Nothing a Null.
Číselná data mohou být libovolné celé nebo reálné číslo v rozsahu od -1,797693134862315E308 do -4,94066E-324 pro záporné hodnoty a od 4,94066E-324 do 1,797693134862315E308 pro kladné hodnoty.
Proměnná Variant může také obsahovat zvláštní hodnotu Error, která indikuje, že v proceduře. došlo k chybové situaci. Která se dá dále zpracovat.
Uživatelský datový typ
Libovolný datový typ vámi definovaný pomocí příkazu Type.
Závěrem
Další ukázky v přípravě. Konstanty, nepovolené znaky....
Článek byl aktualizován: 13.01.2012 20:30
Další články k tématu
- Deklarace konstant
- Proměnné - právě čtete
- Pole úvod
- Pole prakticky
- If, Then, ElseIf, Else - podmínky
- With ... End With
- Select Case
- For Next - Cykly
- Do ... Loop
- While ... Wend
- Exit
- Goto
- OnKey - monitorování a reakce na stisk kláves
Komentáře
Sanet
Přidáno: 22.04.12 15:36
Co jsou to přesně strukturované datové typy?
Pavel Lasák
Přidáno: 22.04.12 18:02
To Sanet: Strukturované datové typy jsou skupiny jednodušších typů. Např. strukturovaný datový typ datum se členy den, mesic a rok. Strukturovaný typ osoba se členy jméno, přijmení titul, datum narození.
Sanet
Přidáno: 24.04.12 12:53
Děkuji za odpověď
Přidání nového komentáře
Za obsah komentářů neodpovídám, jelikož jsou komentáře publikovány ihned po jejich napsání čtenářem. Toto nemohu nijak ovlivnit. Přesto si vyhrazuji možnost jakýkoli neslušný komentář smazat bez udání důvodu.
Nejnovější článek
Z článku o
excel jsem jako poslední přidal či upravil článek
14.05.2012:
Kombinování funkcí - vzorců.
Nejčtenější článek
Excel
- Základy MS Excel
- menu Soubor
- Formát dat
- Vložit
- Grafy
- Vzorce (Funkce)
- Matice
- Data
- Revize (Nástroje)
- VBA Úvod a seznamy článků
- VBA Teorie základy
- VBA Buňky cell
- VBA Listy sheet
- VBA Práce se soubory
- VBA Formuláře (UserForm)
- VBA Grafy
- VBA Application
- VBA Pás karet, Menu
- VBA Triky
- VBA praktické příklady kódu
- Praktické příklady
- Finanční poradce
- Šablony - Templates
- Testy
- Ostatní
Google+
Novinky
Matematické rovnice (vzorce) - Word 2010
Excel: 14.05.2012:
Kombinování funkcí - vzorců
Access: 28.04.2012:
VBA - Jak spustit v MS Access
Power Point: 25.04.2012:
SmartArt - PowerPoint 2010
Outlook 26.04.2012:
Outlook 2010 - jak vypadá
Project: 05.04.2012:
Kalendář ukázka
OneNote: 17.10.2010:
OneNote 2010 – popis obrazovky
Office 30.04.2012:
Kde hledat odpovědi na dotazy o MS Office
Poděkování
Translate
Stránky o MS Office produktu společnosti Micosoft. Neslouží jako technická podpora.
| Email na autora: lasak@centrum.cz | Copyright © : Pavel a Danka 2006 - 2012 |
| Doporučuji: Advokátní kancelář Brno - Dana Lasáková |
1386
Tento web zatím neprošel jazykovou korekturou. Beta verze redakčního systému.