Proměnné ve VBA
V kódu VBA používáme proměnné. Do kterých ukládáme data (nebo objekty). Podle toho, co bude proměnné obsahovat volíme danou proměnnou.
Datové typy umožňující ukládání celých čísel:
Datový typ | Nejmenší hodnota | Největší hodnota | Velikost proměnné v paměti |
Byte | 0 | 255 | 1 byte (28) |
Integer | – 32 768 | 32 768 | 2 byte (216) |
Long | -2 147 483 648 | 2 147 483 648 | 4 byte (232) |
Datové typy umožňující ukládání desetinných čísel:
Datový typ | Velikost proměnné v paměti | Volíme |
Single | 4 byte (232) | v případě krátkých desetinných čísel |
Double | 8 byte (264) | běžný datový typ pro desetinná čísla nebo velmi velká celá čísla |
Currency | 8 byte (264) | zřídka, pro čísla s max 4 desetinnými místy, měna |
Decimal | 14 byte (2112) | pro desetinná čísla s až 28 místy za desetinnou čárkou, tam kde nestačí double |
Další datové typy:
Datový typ | Velikost proměnné v paměti | Volíme |
Date | 8 byte (264) | Pro datumy od 01.01.100 až do 31.12.9999 |
Boolean | 2 byte (216) | Pro hodnoty True a False |
String | 10 byte + délka řetězce | Pro texty – prakticky libovolně dlouhé (snad až 2 miliardy znaků) |
Variant | 16 byte (2128) | Může obsahovat cokoliv (text, číslo, datum) Pokud nedeklarujeme proměnnou, automaticky se přiřadí typ variant. |
Jak proměnné přiřadit (deklarovat) datový typ?
Pro deklaraci požíváme zpravidla příkaz Dim. Po skončení procedury se místo v paměti uvolní. pomocí Dim deklarujeme proměnnou jen pro danou proceduru.
Ukázka
Sub prom()
Dim a As Integer
a = 12
End Sub
Pozor na deklaraci 2 a více proměnných!
chybný zápis: Dim a, b as Integer
správný zápis: Dim a as Integer, b as Integer
Co když na deklaraci proměnné zapomenu?
Pokud se na začátku nepoužije deklarace proměnných, pak mají všechny proměnné použité v proceduře datový typ variant. Ten může obsahovat „vše“ (datum, číslo, text).
Proč je vhodné deklarovat proměnné?
Deklarace proměnné zrychlí chod programu. Deklarování umožní lepší přehlednost programu. Víme jaké proměnné jsou v programu použité a co budou obsahovat (text či číslo).
Je možné deklarovat proměnnou i jinak než použitím Dim?
Kromě výrazu Dim je možné použít i další příkazy:
- Public – proměnná pro všechny moduly a procedury, zachovává si hodnotu po skončení běhu makra
- Private – dostupná pro všechny procedury v daném modulu
- Static – používá se k deklaraci proměnné, která uchovává svou hodnotu mezi voláními procedury
Jak funguje našeptavač?
Výše uvedené proměnné (Integer, Byte, String apod.) jsou dostupné i s pomocí našeptávače. Po zapsání Dim cele_cislo as se zobrazí v našeptavači s ikonou popsaného bílého papíru. Viz náhled:
![](https://mojeznalosti.cz/wp-content/uploads/2024/07/image-13.png)
Jak deklarovat objekty?
Našeptavač však nabídne mnohem více, než jen výše zmíněné datové typy. Důvodem je fakt, že můžeme proměnnou deklarovat jako objekt.
Objekt má svou ikonu – tři šikmo ložené barevné obdélníky.
Viz ukázka:
![](https://mojeznalosti.cz/wp-content/uploads/2024/07/image-14.png)
Objektů je v MS Excel velké množství. Mezi nejčastěji používané můžeme řadit:
- Workbook – sešit
- Worksheet – list
- Range – oblast
- Comment, CommentThreaded – poznámka, komentář
- Hyperlink – hyxpertextový odkaz
- Chart – graf
- PivotTable – kontingenční tabulka
A mnoho mnoho dalších…
Pro přiřazení konkrétního objektu do proměnné použijeme příkaz Set
Kód vypadá například následovně:
Sub prom()
Dim list As Worksheet ‚ deklarace proměnné která bude obsahovat list
Set list = ActiveSheet ‚ přiřazení aktivního listu proměnné list
Debug.Print list.Name ‚ vypsání jména listu z proměnné list
End Sub
Čemu se vyhnout v názvu proměnné a jaké zásady dodržovat?
Název proměnné nesmí:
- obsahovat mezery – víceslovnou proměnnou pojmenováváme tedy DelkaStrany nebo Delka_strany
- mít délku větší než 255 znaků
- začínat číslicí (např. 1a)
- obsahovat nealfanumerické znaky (&, @, {, }, # a další), povolené je podtržítko _
Doporučení!
- Vyhněte se používání diakritiky v názvu proměnných, vyvarujete se zbytečným problémům.
- Pojmenovávejte proměnné co nejpřesněji. Tedy ne aa, xx. Kód budete v budoucnu číst a správný název proměnné velmi zpřehlední výsledný kód. Název by měl být co nejvýstižnější. Např. Hloubka_bazenu