Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:
... neplýtvejte zbytečně místem ...
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.
... jasně a výstižně bez diakritiky ...
Název musí být vystižný. Tak aby bylo jasné o jaký parametr 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.
Kromě deklarace správného typu je potřeba deklarovat platnost.
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.
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.
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
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 |
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.
IF Boolean THEN
MsgBox "je TRUE"
ELSE
MsgBox "je FALSE"
END IF
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.
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.
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.
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.
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.
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.
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ů.
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.
Proměnná typu Object se ukládá jako 32-bitová (4-bajtové) adresy odkazující na objekty.
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.
Existují dva druhy řetězců:
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 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.
Libovolný datový typ vámi definovaný pomocí příkazu Type.
Další ukázky v přípravě. Konstanty, nepovolené znaky....
Článek byl aktualizován: 19.09.2020 11:07
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 .
Děkuji za váš čas a doufám, že jste nalezli odpověď na svůj problém.
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.
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.
|
Pomohl Vám návod? Sdílejte na Facebooku, G+ |
||
|
LinkedIn... |
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 |