Encyklopedie

Proměnné a jejich deklarace ve VBA

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:

 

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:

 

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í!

  1. Vyhněte se používání diakritiky v názvu proměnných, vyvarujete se zbytečným problémům.
  2. 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

 

Chcete se dozvědět více?
Navštivte náš kurz Excel - makra
Zjistit více