Přeskočit navigaci | Přeskočit na novinky

Jste zde: Úvodní stránka » excel » vba-teorie-zaklady » promene-excel-vba

Proměnné ve VBA - MS Excel

Videokurzy Excel

Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:

... 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: 19.09.2020 11:07

Podpora - oceňte web a pozvěte mě na čokoládu

Pomohl vám článek? Vyřešili jste problém? Můžete mě podpořit zakoupení tabulky (samozdřejmě čokoládové), když kafe nepiji ;) Odkaz na zakoupení čokolády. Za veškerou podporu vám děkuji a samozdřejmě jí využiji do zdokonalování a rozšířování webu.

Případně přidejte odkaz na vaši oblíbenou sociální síť, případně využijste hashtag #JakNaExcel .

Poděkování

Děkuji za váš čas a doufám, že jste nalezli odpověď na svůj problém.

Vylepšení

Narazili jste v článku na nejasnost, chybu? Máte tip na vylepšení nebo doplnění článku? Budu rád pokud se zmínite v komentářích.


Pavel Lasák - autor webu

Pavel Lasák

Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od dubna roku 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím 8x za sebou). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 20 let (o Excel píší přes 25). Zdarma je zde přes 1.500 návodu, tipů a triků, včetně přes 350 různých šablon, sešitů a přes 70 taháků v pdf.

   Pavel Lasák LinkedIn Profil    Pavel Lasák twitter Profil





Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Reklama


TOPlist Licence Creative Commons webarchiv rss XML

Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2025 |