Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost
Projekt je realizován v rámci Operačního programu Vzdělávání pro konkurence schopnost, který je spolufinancován z Evropského sociálního fondu a ze státního rozpočtu České republiky DUM-III-1-T2-1-13
Elektronická podpora zkvalitnění výuky
1
Mgr. Pavel Hrubý
DUM-III-1-T2-1-13
Elektronická podpora zkvalitnění výuky
2
Ukázka jednoduchého použití: Po kliknutí na tlačítko se zobrazí dialogové okénko, kde se zadá počet řádků a druh značky . Po kliknutí na OK v dialogových oknech se od políčka H2 budou vypisovat značky podle zadání, v každém řádku bude vždy o jednu značku více.
DUM-III-1-T2-1-13
Elektronická podpora zkvalitnění výuky
3
Vložíme tlačítko (CommandButton) z části ovládací prvky ActiveX, nastavíme mu vhodné vlastnosti a zobrazíme si kód kliknutí tlačítka.
DUM-III-1-T2-1-13
Elektronická podpora zkvalitnění výuky
4
Zvolíme proměnné Private Sub znacky_Click() Dim s As String Dim znacka As String Dim pocet As Integer Dim i As Integer Dim celkem As Integer pocet = InputBox("Kolik řádků znaků chceš vypsat?") znacka = InputBox("Napiš znak (*,#,apod.)") s = znacka Range("h2").Select For i = 1 To počet ActiveCell.Offset(1, 0).Select ActiveCell.Formula = s celkem = celkem + i s = s & znacka Next i MsgBox ("Bylo vypsáno celkem " & celkem & " znaků") End Sub
Funkce InputBox vyvolá dialogové okno s editačním řádkem Do proměnné znacka vybereme znak Do proměnné s přiřadíme znak znacka Použijeme cyklus a pevným počtem opakování Celkem - spočítá celkový počet znaků Řetězec znaků prodloužíme o další znak
Vypíšeme celkový počet znaků DUM-III-1-T2-1-13
Elektronická podpora zkvalitnění výuky
5
DUM-III-1-T2-1-13
Elektronická podpora zkvalitnění výuky
6
Deklarace proměnných Pro proměnnou rezervujeme za běhu programu prostor v paměti pro uložení proměnné. Explicitní deklarace proměnné se zapisuje před jejím vlastním použitím, zpravidla na začátku procedury události. Deklarace začíná příkazem Dim (v podstatě znamená dimenze nebo dimenzovat). V deklaraci můžeme sdělit VBA jaký typ dat budeme používat (není povinné). Neuvedeme-li v deklaraci typ proměnné je automaticky použit implicitní typ dat Variant - může obsahovat data libovolného typu a velikosti. Příklad: ◦ ◦ ◦
Dim Promenna as String String – textový řetězec Integer – celé číslo
DUM-III-1-T2-1-13
InputBox Pokud potřebujete, aby bylo zadáno jen pár údajů a nechce se Vám vytvářet formulář můžete použít InputBox. Slouží pro zadání jedné vstupní informace (číslo, hodnota), kterou předá zpracovatelskému programu.
InputBox(Zpráva, Titulek_dialogu, Výchozí_hodnota, Posice_X , Posice_Y, Help, context) ◦ ◦ ◦ ◦ ◦ ◦ ◦
Zpráva - povinné - text zprávy zobrazení v dialogu Titulek_dialogu - nepovinné - text v titulku dialogu Výchozí_hodnota - nepovinné - pokud je požadavek na výchozí hodnotu Posice_X - nepovinné - pozice okna x Posice_Y - nepovinné - pozice okna y Help - nepovinné - odkaz na soubor s nápovědou context - nepovinné - Číslo tématu nápovědy ze souboru nápovědy - musí být zadán Help.
Elektronická podpora zkvalitnění výuky
7
Jak vybrat buňku v aktivním sešitu ◦ Chcete-li vybrat buňku D5 v aktivním sešitu (ActiveSheet), můžete použít některý z následujících příkladů: ◦ ActiveSheet.Cells(5, 4).Select ◦ –nebo– ◦ ActiveSheet.Range("D5").Select
DUM-III-1-T2-1-13
Elektronická podpora zkvalitnění výuky
8
Cyklus s pevným počtem opakování - For Next
Syntaxe
◦ Opakuje skupinu příkazů podle zadaného počtu opakování.
For čítač = začátek To konec [Step krok] [příkazy] Next [čítač]
Popis jednotlivých části:
◦ čítač - Povinné - Číselná proměnná používaná jako čítač cyklů. Proměnná nemůže být typu Boolean nebo prvek pole ◦ začátek - Povinné - Počáteční hodnota čítače ◦ konec - Povinné - Koncová hodnota čítače ◦ krok - Volitelné. Hodnota, o kterou je čítač změněn po každém průchodu cyklem. (Není-li uvedeno, nastaví se krok na 1) ◦ příkazy - vlastní příkazy. Nebo úplně bez příkazu.
Poznámky: Čítač může i odečítat. Jednotlivé cykly For...Next můžeme vnořovat. Krok nemusí být roven jedné
DUM-III-1-T2-1-13
Elektronická podpora zkvalitnění výuky
9
Offset U objektu Range si lze ulehčit práci tak, že můžeme kurzor buňky pomocí offset přesouvat ◦ (vycházíme z buňky C5)
posunout se vpravo nebo vlevo ◦ MojeRange = Range("C5").Offset(0, 1) – posun doprava ◦ MojeRange = Range("C5").Offset(0, -1) – posun doleva
posunout se nahoru nebo dolů ◦ MojeRange = Range("C5").Offset(1, 0) – posun dolů ◦ MojeRange = Range("C5").Offset(-1, 0) – posun nahoru
DUM-III-1-T2-1-13
Elektronická podpora zkvalitnění výuky
10
Výraz ActiveCell.Offset(1, 0).Select vybere buňku, která je dole pod aktivní buňkou Výraz ActiveCell.Formula = s zapíše do aktivní buňky hodnotu (může být i vzorec), která je uložená v proměnné s
DUM-III-1-T2-1-13
Elektronická podpora zkvalitnění výuky
11
Možnosti načtení pomocí VBA Pro přečtení údajů z buňky lze použít: ◦ Value - může docházet ke ztrátě přesnosti, jelikož přebíra formátování (datum, měna, čas,...). ◦ Value2 - přesnějším u data a měny zobrazí číslo, bez ztráty přesnosti ◦ Text - zobrazí přesně co je v buňce
Příklady (čte hodnotu z buňky A1) ◦ a = Range("A1").Value ◦ a = Range("A1").Value2 ◦ a = Range("A1").Text DUM-III-1-T2-1-13
Elektronická podpora zkvalitnění výuky
12
Jak do konkrétní buňky zapsat nějaký údaj? Existuje několik možností. ◦ Cells(1, 1) = "Ahoj světe." ◦ Range("A1") = "Ahoj světe."
Pokud potřebujeme zapsat vzorec do buňky, pak ◦ ◦ ◦ ◦
Cells(1, 1).Formula = "=A5+A6" Range("A1").Formula = "=A5+A6" Pozor – pro funkce je nutné použít anglické zkratky Range("A1").Formula = "=SUM(A5:A10)" (ne SUMA)
DUM-III-1-T2-1-13
Elektronická podpora zkvalitnění výuky
13
Kratochvíl, Josef: Excel VBA programování maker [online]. c2013 [citováno
11. 02. 2013]. Dostupný z WWW:
Wikipedie: Otevřená encyklopedie: Microsoft Excel [online]. c2013 [citováno 11. 02. 2013]. Dostupný z WWW: Wikipedie: Otevřená encyklopedie: Makro (software) [online]. c2013 [citováno 11. 02. 2013]. Dostupný z WWW: Jureček, Radek: Radek Jureček: Excel [online]. c2013 [citováno 11. 02. 2013]. Dostupný z WWW: Visual Basic pro Aplikace - proměnné a operátory ) [online]. c2013 [citováno 11. 02. 2013]. Dostupný z WWW: Lasak, Pavel: MS Office – ať pracuje za vás [online]. c2013 [citováno 11. 02. 2013]. Dostupný z WWW: Lasak, Pavel: Excel kurz VBA online - zdarma [online]. c2013 [citováno 11. 02. 2013]. Dostupný z WWW:
DUM-III-1-T2-1-13
Elektronická podpora zkvalitnění výuky
14