KIV/ZD cvičení 10 Tomáš Potužák
Makra – pokračování Možností Visual Basicu velké množství V podstatě jako ve všeobecném programovacím jazyce (např. Java) Není účelem předmětu KIV/ZD naučit kompletní Visual Basic Pouze základy (minule) a několik užitečných funkcí (dnes) Pro další funkcionality je nejlepší použít Google
Přístup k buňkám I Objekt ActiveCell Funkce Range(oblast) Vrátí aktuálně vybranou buňku Funkce Range(oblast) Vrátí jednu buňku či celou oblast (objekt Range) podle toho nad čím je volaná (bez ničeho je nad aktivním listem) Více možností jak oblast definovat, např. Range("A1"), Range("A1:B5"), Range("A1", "B5")
Přístup k buňkám II Funkce Offset(řádky, sloupce) Funkce Select Volá se nad objektem Range Vrátí objekt Range reprezentující buňku vzdálenou od původní zadaný počet řádek a sloupců (celá čísla – kladná či záporná) Např. Range("B1").Offset(1, 2) ukazuje na buňku D2, Range("A1"). Offset(0, 3) ukazuje na buňku D1 Funkce Select Nad objektem Range, označí buňky
Přístup k buňkám III Seznam Workbooks Seznam otevřených sešitů Excelu Sešity přístupné pod indexem (počínaje 1) nebo pod názvem Sešit reprezentován objektem Workbook (aktuální sešit v objektu ThisWorkbook) Např. Workbooks.Count vrátí počet sešitů, Workbooks(1) vrátí první otevřený sešit, Workbooks(Workbooks.Count) vrátí poslední otevřený sešit, Workbooks ("Sešit1.xls") vrátí příslušný sešit
Přístup k buňkám IV Seznam Worksheets Seznam listů v jednom sešitu Excelu Volá se nad objektem Workbook Listy přístupné pod indexem (počínaje 1) nebo pod svým názvem List reprezentován objektem Worksheet (aktivní list ActiveSheet) Např. ThisWorkbook.Worksheets(1) vrátí první list aktuálního sešitu, ThisWorkbook. Worksheets("List1") vrátí příslušný list
Práce se soubory I Zobrazení dialogu pro otevření souboru soubor = Application.GetOpenFileName ("Soubory MS Excel (*.xls; *.xlsx), *.xls;*.xlsx", 1, "Otevřít soubor", False) Funkce soubor neotevře, jen vrátí cestu k souboru (pokud je stisknuto Otevřít) nebo False (pokud je výběr souboru zrušen) Filtrů pro přípony souborů může být více (v tomto případě jeden), parametr „1“ udává, který bude zobrazen v dialogu
Práce se soubory II Zjištění cesty z aktuálního sešitu ThisWorkbook.Path Určení cesty k jinému sešitu ze stejné složky jako je aktuální sešit ThisWorkbook.Path & "\JinySesit.xls" Otevření jiného sešitu Workbooks.Open (nazevSouboru) nazevSouboru je včetně cesty
Práce se soubory III Otevření textového souboru Stejně jako otevření sešitu Nemusí se načíst správně (nelze nastavit, jak se má přesně naimportovat do řádek a sloupců) Lépe využít QueryTables – dostupné v každém listu, lze nastavit všechny vlastnosti jako při ručním importu je jich hodně nejlépe makro nahrát a pak případně upravit
Náhodná čísla Funkce Rnd() Vrátí reálné náhodné číslo z intervalu <0; 1) Někdy je před použitím nutné použít příkaz Randomize, aby funkce Rnd() nevracela stále stejné číslo (často funguje i bez toho) Celá náhodná čísla v intervalu <dolní_mez; horní_mez> Int(dolni_mez + Rnd() * (horni_mez – dolni_mez + 1)) Int() ořízne reálné číslo na celé
Převod znaků na čísla a naopak Hodí se mj. při práci s adresami Funkce Chr(kód) Ze zadaného ASCII kódu znaku (v desítkové soustavě) vytvoří odpovídající znak Např. Chr(65) = "A" Funkce Asc(znak) Vrátí ASCII kód zadaného znaku Např. Asc("A") = 65
Obecná doporučení Když lze makro nahrát, není nutné ho programovat I když makro nelze nahrát, často lze nahrát jeho části, které pak lze využít Pro neznámé funkcionality použít Google Mnoho stránek i v češtině Dát pozor, aby se jednalo o VBA pro Excel (Visual Basic for Applications), standardní VB může být rozdílný Často mnoho různých řešení problému