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
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 Vypíšeme celkový počet znaků Zvolíme proměnné 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 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 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. DUM-III-1-T2-1-13 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 Opakuje skupinu příkazů podle zadaného počtu opakování. Syntaxe 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:<http://makra.webz.cz> Wikipedie: Otevřená encyklopedie: Microsoft Excel [online]. c2013 [citováno 11. 02. 2013]. Dostupný z WWW: <http://cs.wikipedia.org/w/index.php?title=microsoft_excel&oldid=10045561> Wikipedie: Otevřená encyklopedie: Makro (software) [online]. c2013 [citováno 11. 02. 2013]. Dostupný z WWW: <http://cs.wikipedia.org/w/index.php?title=makro_(software)&oldid=9984300> Jureček, Radek: Radek Jureček: Excel [online]. c2013 [citováno 11. 02. 2013]. Dostupný z WWW:<http://www.rjurecek.cz/index.htm> Visual Basic pro Aplikace - proměnné a operátory ) [online]. c2013 [citováno 11. 02. 2013]. Dostupný z WWW: <http://www.cadforum.cz/cadforum/vyvojove- prostredky- AutoCADu/Pasmo/Casti/VisualBasic/VBAZakladyProg/352vbazppromenneaoperatory.ht m> Lasak, Pavel: MS Office ať pracuje za vás [online]. c2013 [citováno 11. 02. 2013]. Dostupný z WWW: <http://office.lasakovi.com/excel/> Lasak, Pavel: Excel kurz VBA online - zdarma [online]. c2013 [citováno 11. 02. 2013]. Dostupný z WWW: <http://office.lasakovi.com/excel/zaklady/excel-kurz-vba-on-linezdarma/> DUM-III-1-T2-1-13 Elektronická podpora zkvalitnění výuky 14